vue createElement方法中的data参数为什么不能是observed?

下面代码来自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?一直没想通这个问题,希望有大佬能解答一下

阅读 2.7k
1 个回答

参数data在vnode的渲染过程中可能会被改变,如果是一个监听属性,就会触发监控,从而产生不可预估的问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题