775a7c2b41
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. |
||
---|---|---|
.. | ||
__tests__ | ||
src | ||
api-extractor.json | ||
index.js | ||
LICENSE | ||
package.json | ||
README.md |
@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
andWeakSet
.