Commit Graph

41 Commits

Author SHA1 Message Date
Evan You b83c580131 feat(reactivity): add support for `customRef` API 2020-04-14 20:45:46 -04:00
Thorsten Lünborg 33ccfc0a8b
fix(types): UnwrapRef should bail on DOM element types (#952)
fix #951
2020-04-13 11:51:32 -04:00
hareku 643ff233af
types(reactivity): add undefined type to ref/shallowRef when no args (#791) 2020-03-06 11:32:39 -05:00
Evan You 3206e5dfe5 fix(types): shallowRef should not unwrap value type 2020-02-25 20:43:01 -05:00
Evan You d4c6957e2d fix(types): ref value type unwrapping should happen at creation time 2020-02-25 19:44:06 -05:00
Evan You e9024bf1b7 feat(reactivity): expose unref and shallowRef 2020-02-22 04:39:32 +01:00
Evan You 775a7c2b41 refactor: preserve refs in reactive arrays
BREAKING CHANGE: reactive arrays no longer unwraps contained refs

    When reactive arrays contain refs, especially a mix of refs and
    plain values, Array prototype methods will fail to function
    properly - e.g. sort() or reverse() will overwrite the ref's value
    instead of moving it (see #737).

    Ensuring correct behavior for all possible Array methods while
    retaining the ref unwrapping behavior is exceedinly complicated; In
    addition, even if Vue handles the built-in methods internally, it
    would still break when the user attempts to use a 3rd party utility
    functioon (e.g. lodash) on a reactive array containing refs.

    After this commit, similar to other collection types like Map and
    Set, Arrays will no longer automatically unwrap contained refs.

    The usage of mixed refs and plain values in Arrays should be rare in
    practice. In cases where this is necessary, the user can create a
    computed property that performs the unwrapping.
2020-02-21 17:48:39 +01:00
Evan You 627b9df4a2 fix(types): improve ref typing, close #759 2020-02-21 17:45:42 +01:00
Evan You 763faac182 wip(ssr): revert reactivity ssr paths
The perf gains are not worth the correctness issues these paths may lead to
2020-01-27 16:00:18 -05:00
Evan You e43f5935b5 refactor: better variable naming 2020-01-27 16:00:18 -05:00
Evan You 25a0d4a65f wip(ssr): reduce reactivity overhead during ssr 2020-01-27 16:00:17 -05:00
likui 0c42a6d8fa types: refactor ref unwrapping (#646) 2020-01-20 13:22:18 -05:00
IU 2b4d0d6501 types(reactivity): handle primitive + object intersection types in UnwrapRef (#614) 2020-01-16 17:47:47 -05:00
Carlos Rodrigues 985f4c91d9 types: improve isRef typing (#578) 2020-01-06 16:15:49 -05:00
Evan You 89a187b895 refactor(reactivity): separate track and trigger operation types 2019-12-03 11:30:24 -05:00
Evan You 61d8941692 types(reactivity): ref type should not expose _isRef 2019-11-08 13:29:43 -05:00
Carlos Rodrigues 68ad302714 types(reactivity): add support for tuples in ref unwrapping (#436) 2019-11-08 12:52:24 -05:00
Junyan a02820d7e0 feat: warn when toRefs() receives non-reactive object (#430) 2019-11-05 10:44:28 -05:00
Evan You f3c1fa75f6 feat(reactivity): provide correct tracking info for refs 2019-11-02 23:20:49 -04:00
Evan You 66ecd8b47f types: setup tests for built d.ts files 2019-11-01 22:54:01 -04:00
Evan You af57ad110f chore: revert prettier 2019-10-22 11:53:32 -04:00
Evan You b5886189ba types: massive refactor 2019-10-22 11:53:32 -04:00
扩散性百万甜面包 3cd2f7e68e types: fix ref unwrapping when nested inside arrays (#331) 2019-10-18 14:54:05 -04:00
Evan You cdee65aa1b perf: revert to _isRef for perf
Benchmarking shows checking for a plain property is about 4~5x faster
than checking for a Symbol, likely because the Symbol does not fit well
into V8's hidden class model.
2019-10-17 15:02:14 -04:00
Evan You 1c56d1bf19 test: test unwrapping computed refs 2019-10-14 11:21:09 -04:00
Jooger d8b2b9eb9c types(ref): improve UnwrapRef types (#266) 2019-10-14 11:02:49 -04:00
Jooger 675ce2c15d types(reactivity): fix ref typing (#239) 2019-10-12 11:05:34 -04:00
Chester e68321eac0 chore: use '' instead of undefined (#205) 2019-10-11 22:04:33 -04:00
相学长 cbb4b19cfb feat(reactivity): ref(Ref) should return Ref (#180) 2019-10-10 11:34:42 -04:00
扩散性百万甜面包 def27239bd type: improve typing (#177) 2019-10-09 14:01:53 -04:00
Andrew / Kana c6b7afcc23 types: use recursion for unwrapping refs (#137) 2019-10-06 20:11:52 -04:00
Carlos Rodrigues 8d70093802 refactor(reactivity): change _isRef to use refSymbol as key (#124) 2019-10-06 11:46:08 -04:00
Rahul Kadyan f58e5e96f2 types: Use unique symbol type for _isRef property of ref object (#118) 2019-10-05 22:32:50 -04:00
扩散性百万甜面包 0bdee72e17 feat(reactivity): use Symbol for Ref._isRef (#114) 2019-10-05 15:46:36 -04:00
Evan You 46bd9dbab0 perf: avoid using WeakSet for isRef check 2019-09-30 14:52:10 -04:00
Evan You 6c7cbb0dc9 types: avoid plain objects with value being mistaken as refs 2019-09-05 18:32:19 -04:00
Evan You b218678c66 feat: toRefs 2019-08-20 09:38:00 -04:00
Evan You 6a22ad2fb2 types: simplify ref type 2019-08-18 22:48:46 -04:00
Evan You 3facfa5a55 wip: adjust computed ref type 2019-08-16 10:52:45 -04:00
Evan You 96d65e1ab5 wip: improve ref typing 2019-08-16 09:54:57 -04:00
Evan You caba6d5c9e wip: state -> reactive, value -> ref 2019-08-16 09:42:46 -04:00