【发布时间】:2021-03-10 05:39:20
【问题描述】:
我注意到 prop 突变 (Vue 2.6) 有一些奇怪的地方。
应避免直接在子组件中修改 props,否则会触发以下著名警告
"避免直接改变一个 prop,因为它的值是 被覆盖了……”
所以如果在我的父组件中我有一个类似的数据
exemple: "Hello World"
我作为道具传递给子组件。如果在那个子组件中我做类似的事情
this.exemple = "Hello World!"
我收到警告。很公平。现在我注意到如果父级中的数据是像
这样的对象exemple : {message : "Hello World"}
在孩子身上我会做类似的事情
this.exemple.message = "Hello World!"
这不会触发任何警告,而且父组件中的数据会更新
我想知道为什么。为什么 prop 突变在一种情况下会传播到父级,而在另一种情况下不会传播到父级?它可能与javascript如何存储这些变量有关吗?使用这个技巧是个好习惯吗?
【问题讨论】:
-
您可以发出更改
this.$emit('update:example', 'Hello!')... 并在父同步中:example.sync="example"... 这样 vue 就会知道更改并可以执行任何需要的响应操作
标签: javascript vue.js vuejs2 vue-props