下面代码来自vue源码中_createElement函数
export function _createElement(
context: Component,
tag ? : string | Class < Component > | Function | Object,
data ? : VNodeData,
children ? : any,
normalizationType ? : number
): VNode | Array < VNode > {
if (isDef(data) && isDef((data: any).__ob__)) {
process.env.NODE_ENV !== 'production' && warn(
`Avoid using observed data object as vnode data: ${JSON.stringify(data)}n` +
'Always create fresh vnode data objects in each render!',
context)
return createEmptyVNode()
}
...
}
这里的data为什么不能是observed?一直没想通这个问题,希望有大佬能解答一下
参数data在vnode的渲染过程中可能会被改变,如果是一个监听属性,就会触发监控,从而产生不可预估的问题