Avoid mutating a prop directly since the value will be overwritten whenever the

52 阅读1分钟

单向数据流 prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。这是为了防止子组件无意修改了父组件的状态——这会让应用的数据流难以理解

另外,每次父组件更新时,子组件的所有 prop 都会更新为最新值。这意味着不应该在子组件内部改变 prop。如果这么做了,Vue 会在控制台给出警告

父组件数据变化时,子组件数据会相应变化;而子组件数据变化时,父组件数据不变,并在控制台显示警告

image.png

修改子组件数据时,打开浏览器控制台会出现下图所示警告提示

image.png

修改prop数据 修改prop中的数据,通常有以下两种原因

1、prop 作为初始值传入后,子组件想把它当作局部数据来用

2、prop 作为初始值传入,由子组件处理成其它数据输出

[注意]JS中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态

1、定义一个局部变量,并用 prop 的值初始化它

props: ['initialCounter'],
data() { 
    return { 
        counter: this.initialCounter
    }
}

2、定义一个计算属性,处理 prop 的值并返回

props: ['size'], 
computed: { 
    normalizedSize() { 
    return this.size.trim().toLowerCase() 
}

原文链接:blog.csdn.net/qq_36697196…