mirror of https://github.com/vuejs/core.git
reference: https://github.com/vuejs/rfcs/issues/121 BREAKING CHANGE: object returned from `setup()` are no longer implicitly passed to `reactive()`. The renderContext is the object returned by `setup()` (or a new object if no setup() is present). Before this change, it was implicitly passed to `reactive()` for ref unwrapping. But this has the side effect of unnecessary deep reactive conversion on properties that should not be made reactive (e.g. computed return values and injected non-reactive objects), and can lead to performance issues. This change removes the `reactive()` call and instead performs a shallow ref unwrapping at the render proxy level. The breaking part is when the user returns an object with a plain property from `setup()`, e.g. `return { count: 0 }`, this property will no longer trigger updates when mutated by a in-template event handler. Instead, explicit refs are required. This also means that any objects not explicitly made reactive in `setup()` will remain non-reactive. This can be desirable when exposing heavy external stateful objects on `this`. |
||
---|---|---|
.. | ||
components | ||
helpers | ||
apiCreateApp.ts | ||
apiDefineComponent.ts | ||
apiInject.ts | ||
apiLifecycle.ts | ||
apiOptions.ts | ||
apiReactivity.ts | ||
apiWatch.ts | ||
component.ts | ||
componentProps.ts | ||
componentProxy.ts | ||
componentRenderUtils.ts | ||
componentSlots.ts | ||
directives.ts | ||
errorHandling.ts | ||
h.ts | ||
hmr.ts | ||
index.ts | ||
renderer.ts | ||
scheduler.ts | ||
shapeFlags.ts | ||
vnode.ts | ||
warning.ts |