vue3-yuanma/packages/reactivity
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
..
__tests__ refactor: preserve refs in reactive arrays 2020-02-21 17:48:39 +01:00
src refactor: preserve refs in reactive arrays 2020-02-21 17:48:39 +01:00
api-extractor.json build: use api-extractor for type rollup 2019-09-03 12:16:22 -04:00
index.js fix: fix reactivity cjs entry 2019-09-14 11:26:53 -04:00
LICENSE chore: license 2019-10-28 11:15:17 -04:00
package.json release: v3.0.0-alpha.5 2020-02-18 15:00:55 -05:00
README.md chore: update README.md (#592) [ci skip] 2020-01-07 13:19:54 -05:00

@vue/reactivity

Usage Note

This package is inlined into Global & Browser ESM builds of user-facing renderers (e.g. @vue/runtime-dom), but also published as a package that can be used standalone. The standalone build should not be used alongside a pre-bundled build of a user-facing renderer, as they will have different internal storage for reactivity connections. A user-facing renderer should re-export all APIs from this package.

For full exposed APIs, see src/index.ts. You can also run yarn build reactivity --types from repo root, which will generate an API report at temp/reactivity.api.md.

Credits

The implementation of this module is inspired by the following prior art in the JavaScript ecosystem:

Caveats

  • Built-in objects are not observed except for Array, Map, WeakMap, Set and WeakSet.