props
作用:父组件向子组件传递数据
1.单向数据流
所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。
不要在子数组内部修改props!
-
常见的使用方法:
-
希望将prop 作为一个本地的 数据来使用
-
通过定义一个本地的 data property 并将这个 prop 用作其初始值来使用
-
props: ['initialCounter'], data: function () { return { counter: this.initialCounter } }
这就将父组件传来的initialCounter赋值给了counter
-
-
prop作为一个原始的值使用且需要转换
-
通过计算属性修改并赋值
-
props: ['size'], computed: { normalizedSize: function () { return this.size.trim().toLowerCase() } }
-
-
2.prop验证
我们可以为组件的 prop 指定验证要求,例如你知道的这些类型。如果有一个需求没有被满足,则 Vue 会在浏览器控制台中警告你。这在开发一个会被别人用到的组件时尤其有帮助。
-
type:设置类型
null
和undefined
会通过任何类型验证- 可以设置多个可能类型: propB: [String, Number]
type
还可以是一个自定义的构造函数:propC:Person
-
required:是否必须
-
default:默认值为
-
对象或数组默认值必须从一个函数获取
-
default: function () { return { message: 'hello' } }
-
-
validator:自定义函数验证
-
propF: { validator: function (value) { // 这个值必须匹配下列字符串中的一个 return ['success', 'warning', 'danger'].indexOf(value) !== -1 } }
-
注意:那些 prop 会在一个组件实例创建之前进行验证,所以实例的 property (如
data
、computed
等) 在default
或validator
函数中是不可用的。