returned from `defineComponent`
ref: https://github.com/vuejs/vue-router-next/pull/421
also close#1880
Previous `Component` type is now exported as `ConcreteComponent`.
This introduces a minor breaking change when calling `h(comp, { ... })`
will now fail if `comp` is a of generic `Component` type, since it does
not specify what props it expects.
fix#1665
- cloned vnodes with extra props will receive only the full props flag
- this commit affects `cloneVNode` behavior when used in manual render
functions.
- ok for normal elements since elements only use patchFlags for own
props optimization
- full props flag is skipped for fragments because fragments use
patchFlags only for children optimization
- this also affects `shouldUpdateComponent` where it should now only
respect patchFlags in optimized mode, since component vnodes use
the patchFlag for both props and slots optimization checks.
* types(runtime-core): improve types for transition hook
fix#1000
* Update packages/runtime-core/src/components/BaseTransition.ts
Co-Authored-By: Carlos Rodrigues <david-181@hotmail.com>
* fix: run ci
Co-authored-by: Carlos Rodrigues <david-181@hotmail.com>
- v-model and v-show directives are now exposed as public
- compiler-used runtime helpers are now exposed for TS tooling, but marked as @private
close#1329
WeakSets and WeakMaps shows degrading performance as the amount of
observed objects increases. Using hidden keys result in better
performance especially when repeatedly creating large amounts of
reactive proxies.
This also makes it possible to more efficiently declare non-reactive
objects in userland.
BREAKING CHANGE: Reactivity APIs adjustments:
- `readonly` is now non-tracking if called on plain objects.
`lock` and `unlock` have been removed. A `readonly` proxy can no
longer be directly mutated. However, it can still wrap an already
reactive object and track changes to the source reactive object.
- `isReactive` now only returns true for proxies created by `reactive`,
or a `readonly` proxy that wraps a `reactive` proxy.
- A new utility `isProxy` is introduced, which returns true for both
reactive or readonly proxies.
- `markNonReactive` has been renamed to `markRaw`.
BREAKING CHANGE: `<portal>` has been renamed to `<teleport>`.
`target` prop is also renmaed to `to`, so the new usage will be:
```html
<Teleport to="#modal-layer" :disabled="isMobile">
<div class="modal">
hello
</div>
</Teleport>
```
The primary reason for the renaming is to avoid potential naming
conflict with [native portals](https://wicg.github.io/portals/).