将整个数据对象作为道具传递

Mah*_*dam 5 vue.js

是否可以Vue将整个data对象作为道具传递?

例如

Vue.component('comp', {
  props: ['allData'],
  template: '<div>{{allData.msg}}</div>'
})

new Vue({
 el: "#test",
 data: {
   msg: "Hello"
 }
})
Run Code Online (Sandbox Code Playgroud)

在我看来:

<div id="test">
  <comp :allData="data"></comp>
</div>
Run Code Online (Sandbox Code Playgroud)

小智 4

可能是这样的:

<div id="test">
  <comp :allData="$data"></comp>
</div>
Run Code Online (Sandbox Code Playgroud)

然而,allData组件中的变化会影响父组件的状态,因为它是一个对象。请参阅下面的Vue 1.0 文档中的警告:

请注意,如果传递的 prop 是对象或数组,则它是通过引用传递的。无论您使用的绑定类型如何,在子级内部改变对象或数组本身都会影响父级状态。

Vue 2.0 文档

请注意,JavaScript 中的对象和数组是通过引用传递的,因此如果 prop 是数组或对象,则在子级内部改变对象或数组本身将影响父级状态。