feat: support ref in v-for, remove compat deprecation warnings
This commit is contained in:
@@ -42,7 +42,6 @@ import { hmrDirtyComponents } from './hmr'
|
||||
import { convertLegacyComponent } from './compat/component'
|
||||
import { convertLegacyVModelProps } from './compat/componentVModel'
|
||||
import { defineLegacyVNodeProperties } from './compat/renderFn'
|
||||
import { convertLegacyRefInFor } from './compat/ref'
|
||||
|
||||
export const Fragment = Symbol(__DEV__ ? 'Fragment' : undefined) as any as {
|
||||
__isFragment: true
|
||||
@@ -73,7 +72,8 @@ export type VNodeRef =
|
||||
export type VNodeNormalizedRefAtom = {
|
||||
i: ComponentInternalInstance
|
||||
r: VNodeRef
|
||||
f?: boolean // v2 compat only, refInFor marker
|
||||
k?: string // setup ref key
|
||||
f?: boolean // refInFor marker
|
||||
}
|
||||
|
||||
export type VNodeNormalizedRef =
|
||||
@@ -92,6 +92,8 @@ export type VNodeHook =
|
||||
export type VNodeProps = {
|
||||
key?: string | number | symbol
|
||||
ref?: VNodeRef
|
||||
ref_for?: boolean
|
||||
ref_key?: string
|
||||
|
||||
// vnode hooks
|
||||
onVnodeBeforeMount?: VNodeMountHook | VNodeMountHook[]
|
||||
@@ -380,11 +382,15 @@ export const InternalObjectKey = `__vInternal`
|
||||
const normalizeKey = ({ key }: VNodeProps): VNode['key'] =>
|
||||
key != null ? key : null
|
||||
|
||||
const normalizeRef = ({ ref }: VNodeProps): VNodeNormalizedRefAtom | null => {
|
||||
const normalizeRef = ({
|
||||
ref,
|
||||
ref_key,
|
||||
ref_for
|
||||
}: VNodeProps): VNodeNormalizedRefAtom | null => {
|
||||
return (
|
||||
ref != null
|
||||
? isString(ref) || isRef(ref) || isFunction(ref)
|
||||
? { i: currentRenderingInstance, r: ref }
|
||||
? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }
|
||||
: ref
|
||||
: null
|
||||
) as any
|
||||
@@ -468,7 +474,6 @@ function createBaseVNode(
|
||||
|
||||
if (__COMPAT__) {
|
||||
convertLegacyVModelProps(vnode)
|
||||
convertLegacyRefInFor(vnode)
|
||||
defineLegacyVNodeProperties(vnode)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user