我注意到 prop 突变(Vue 2.6)有一些奇怪的地方。
应避免直接在子组件中改变 props,否则会触发以下著名的警告
“避免直接改变道具,因为该值将被覆盖......”
因此,如果在我的父组件中我有一个类似的数据
exemple: "Hello World"
Run Code Online (Sandbox Code Playgroud)
我将其作为道具传递给子组件。如果在那个子组件中我做了类似的事情
this.exemple = "Hello World!"
Run Code Online (Sandbox Code Playgroud)
我收到警告。很公平。现在我注意到,如果父级中的数据是像这样的对象
exemple : {message : "Hello World"}
Run Code Online (Sandbox Code Playgroud)
我在孩子身上做了类似的事情
this.exemple.message = "Hello World!"
Run Code Online (Sandbox Code Playgroud)
这不会触发任何警告,而且父组件中的数据会更新
我想知道为什么。为什么在一种情况下 prop 突变会传播到亲本,而在另一种情况下则不会?它可能与 javascript 如何存储这些变量有关吗?使用这个技巧是个好习惯吗?