Evan You
42ace9577d
feat: watchPostEffect
2021-07-16 14:30:49 -04:00
Anthony Fu
f5617fc3bb
feat(reactivity): new effectScope API ( #2195 )
2021-07-16 14:30:49 -04:00
Evan You
87f69fd0bb
perf(reactivity): improve reactive effect memory usage ( #4001 )
...
Based on #2345 , but with smaller API change
- Use class implementation for `ReactiveEffect`
- Switch internal creation of effects to use the class constructor
- Avoid options object allocation
- Avoid creating bound effect runner function (used in schedulers) when not necessary.
- Consumes ~17% less memory compared to last commit
- Introduces a very minor breaking change: the `scheduler` option passed to `effect` no longer receives the runner function.
2021-07-16 14:30:49 -04:00
Evan You
2937530bef
fix(v-model): handle mutations of v-model bound array/sets
...
fix #4096
2021-07-15 12:14:19 -04:00
Evan You
fddef8bb74
chore: remove unnecessary casting
2021-06-26 21:35:25 -04:00
Evan You
9acc9a1fa8
fix(watch): avoid traversing objects that are marked non-reactive
...
e.g. Vue public instances
2021-06-02 15:51:27 -04:00
Evan You
1ff06376ff
chore: type fix
2021-05-27 20:58:27 -04:00
Evan You
1526f94edf
fix(watch): should not leak this context to setup watch getters
...
ref #3603
2021-05-25 11:10:11 -04:00
AbaAba~
e7300eb479
fix(runtime-core): watching multiple sources: computed ( #3066 )
...
fix #3068
2021-05-07 18:03:35 -04:00
Evan You
98bc9a26e9
wip: more compat tweaks
2021-04-22 09:49:25 -04:00
Evan You
62b8f4a39c
fix(watch): avoid traversing non-plain objects
2021-04-20 17:13:58 -04:00
Evan You
115372dd5b
wip: refactor deprecations into a single file
2021-04-12 18:47:50 -04:00
Evan You
a2f441dc0e
wip: refactor compat check utils
2021-04-09 23:51:50 -04:00
Evan You
7a25cbb7a7
wip: fix compat utils usage
2021-04-09 23:21:54 -04:00
Evan You
1c2c77eb9f
wip: apply compat enabled flags to currently implemented features
2021-04-07 16:19:25 -04:00
Evan You
208bef5d97
wip: watch array compat
2021-04-07 16:19:25 -04:00
Evan You
870f2a7ba3
fix(watch): this.$watch should support watching keypath
2021-04-07 16:19:04 -04:00
TJ Koblentz
e4b5fccd0c
fix(ssr): watchEffect onInvalidate runner initialization ( #3323 )
...
close #3322
2021-03-25 11:17:57 -04:00
edison
eb1fae63f9
fix(runtime-core): handle error in async watchEffect ( #3129 )
2021-03-23 10:20:52 +01:00
edison
ec8fd10cec
fix(runtime-core): instanceWatch should pass this.proxy
to source as the first argument ( #2753 )
2021-02-09 08:00:32 +01:00
Yang Mingshan
e109f7b898
chore: remove overloads numbers in comments ( #2976 )
2021-02-04 14:34:40 +08:00
Zcating
d2d27b2e66
types(watch): better typing when watching multiple sources ( #2425 )
2020-12-04 16:32:26 -05:00
Thorsten Lünborg
735af1c7b7
fix(runtime-core): ensure watchers are always registered to correct instance owner ( #2495 )
...
close : #2381
2020-11-27 09:31:50 -05:00
Pick
9b34f915ab
refactor(runtime-core): simplify deep watch traverse ( #2212 )
2020-10-13 16:06:36 -04:00
Pick
e4a5387435
refactor(runtime-core): refactor watch typing ( #2191 )
2020-10-13 15:45:17 -04:00
Evan You
390589ec6d
fix(reactivity): should not trigger watch on computed ref when value is unchanged
...
fix #2231
2020-10-06 18:16:20 -04:00
Evan You
49bb44756f
refactor: watch APIs default to trigger pre-flush
...
BREAKING CHANGE: watch APIs now default to use `flush: 'pre'` instead of
`flush: 'post'`.
- This change affects `watch`, `watchEffect`, the `watch` component
option, and `this.$watch`.
- As pointed out by @skirtles-code in
[this comment](https://github.com/vuejs/vue-next/issues/1706#issuecomment-666258948 ),
Vue 2's watch behavior is pre-flush, and the ecosystem has many uses
of watch that assumes the pre-flush behavior. Defaulting to post-flush
can result in unnecessary re-renders without the users being aware of
it.
- With this change, watchers need to specify `{ flush: 'post' }` via
options to trigger callback after Vue render updates. Note that
specifying `{ flush: 'post' }` will also defer `watchEffect`'s
initial run to wait for the component's initial render.
2020-09-17 23:17:21 -04:00
Evan You
0124eacc91
refactor(reactivity): refactor iteration key trigger logic + use more robust Map/Set check
2020-09-14 11:26:34 -04:00
Yang Mingshan
10293c7a18
fix(watch): traverse refs in deep watch ( #1939 )
...
ref #1900
2020-08-23 14:41:11 -04:00
Evan You
611437a3fe
fix(runtime-core/scheduler): allow component render functions to trigger itself
...
fix #1801
2020-08-13 17:42:47 -04:00
Evan You
3692f2738f
refactor(runtime-core/scheduler): dedicated preFlush queue
...
properly fix #1763 , #1777 , #1781
2020-08-05 10:55:23 -04:00
Evan You
fce2689ff1
fix(watch): should trigger watcher callback on triggerRef when watching ref source
...
fix #1736
2020-07-30 18:29:38 -04:00
Evan You
09702e95b9
fix(runtime-core/scheduler): only allow watch callbacks to be self-triggering
...
fix #1740
Previous fix for #1727 caused `watchEffect` to also recursively trigger
itself on reactive array mutations which implicitly registers array
`.length` as dependencies and mutates it at the same time.
This fix limits recursive trigger behavior to only `watch()` callbacks
since code inside the callback do not register dependencies and
mutations are always explicitly intended.
2020-07-30 17:57:20 -04:00
Tan Li Hau
288b4eab9e
fix(watch): fix watching reactive array ( #1656 )
...
fixes #1655
2020-07-20 12:39:22 -04:00
Carlos Rodrigues
8facaefcc3
fix(watch): callback not called when using flush:sync
( #1633 )
2020-07-19 13:30:24 -04:00
Evan You
341b30c961
fix(watch): post flush watchers should not fire when component is unmounted
...
fix #1603
2020-07-17 11:17:29 -04:00
Evan You
4535b1bde8
chore: remove outdated options
2020-07-15 17:05:00 -04:00
Evan You
58b07069ad
fix(watch): stop instance-bound watchers in post render queue
...
so that changes triggered in beforeUnmount get correct value in callback
fix #1525
2020-07-06 21:50:56 -04:00
Yang Mingshan
ba62ccd55d
feat(watch): support directly watching reactive object in multiple sources with deep default ( #1201 )
2020-05-18 11:02:51 -04:00
Evan You
ff97be15c3
chore: ensure warn is dev only
2020-05-04 10:17:40 -04:00
Evan You
6b33cc4229
feat(watch): support directly watching reactive object with deep default
...
Also warn invalid watch sources
close #1110
2020-05-04 09:27:28 -04:00
Evan You
892fb6d229
types: use more consistent naming for apiWatch type exports
...
BREAKING CHANGE: Some watch API types are renamed.
- `BaseWatchOptions` -> `WatchOptionsBase`
- `StopHandle` -> `WatchStopHandle`
2020-04-27 13:33:57 -04:00
Jian Zhang
a51b052672
chore: remove a dead if branch ( #986 )
2020-04-17 18:41:33 -04:00
Carlos Rodrigues
99fd158d09
fix(watch): fix deep watchers on refs containing primitives ( #984 )
2020-04-17 09:55:41 -04:00
Evan You
be21cfb1db
feat(types): feat(types): add ComponentCustomProperties
interface ( #982 )
2020-04-17 09:12:50 -04:00
Evan You
573bcb2e11
refactor(runtime-core): remove the need for currentSuspense
2020-03-30 11:49:51 -04:00
Evan You
b8c1be18f3
refactor(types): use stricter settings
...
fix #847
2020-03-23 11:08:22 -04:00
Evan You
ba9a91c48c
refactor: remove null comparisons
2020-03-18 18:14:51 -04:00
Evan You
e42d6b0712
refactor: use consistent name for watch invalidation register function
2020-02-26 10:20:30 -05:00
Evan You
711d16cc65
refactor: remove old watch signature support
2020-02-25 19:39:49 -05:00