Evan You 6b10f0cd1d refactor: remove implicit reactive() call on renderContext
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`.
2020-01-27 16:00:18 -05:00
..
2018-10-26 15:44:50 -04:00
2019-10-28 11:15:17 -04:00
2020-01-22 11:10:30 -05:00
2019-12-09 14:06:31 -05:00

@vue/runtime-core

This package is published only for typing and building custom renderers. It is NOT meant to be used in applications.

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

Building a Custom Renderer

import { createRenderer } from '@vue/runtime-core'

const { render, createApp } = createRenderer({
  patchProp,
  insert,
  remove,
  createElement,
  // ...
})

// `render` is the low-level API
// `createApp` returns an app instance with configurable context shared
// by the entire app tree.
export { render, createApp }

export * from '@vue/runtime-core'

See @vue/runtime-dom for how a DOM-targeting renderer is implemented.