组件实例的作用域是孤立的. 这意味着不能并且不应该在子组件的模板内直接引用父组件的数据. 可以使用 props 把数据传给子组件.
prop 是单向绑定的: 当父组件的属性变化时, 将传导给子组件, 但是不会反过来. 这是为了防止子组件无意修改了父组件的状态 -- 这会让应用的数据流难以理解.
另外, 每次父组件更新时, 子组件的所有 prop 都会更新为最新值. 这意味着你不应该在子组件内部改变 prop . 如果你这么做了, vue 会在控制台给出警告.
通常有两种改变 prop 的情况:
prop 作为初始值传入, 子组件之后只是将它的初始值作为本地数据的初始值使用;
prop 作为需要被转变的原始值传入.
更确切的说这两种情况是:
1. 定义一个局部 data 属性, 并将 prop 的初始值作为局部数据的初始值.
- props: ['initialCounter'],
- data: function () {
- return { counter: this.initialCounter }
- }
2. 定义一个 computed 属性, 此属性从 prop 的值计算得出.
- props: ['size'],
- computed: {
- normalizedSize: function () {
- return this.size.trim().toLowerCase()
- }
- }
注意在 JavaScript 中对象和数组是引用类型, 指向同一个内存空间, 如果 prop 是一个对象或数组, 在子组件内部改变它会影响父组件的状态.
更多 vue 知识请关注 html 中文网 vue.js 教程 https://www.html.cn/web/vue-js/ 栏目.
来源: http://www.css88.com/web/vue-js/15494.html