传递 props 属性
现在,组件的数据在数据属性中被硬编码。如果我们希望我们的组件实际上是可用的,我们需要能够从其实例传递自定义数据。在 Vue.js 中,我们用 props 做到这一点。
export default { props: ['grade', 'maxStars', 'hasCounter'], data() { return { stars: this.grade } }, ...}
和在 main.js 文件里:
new Vue({ el: '#app', template: ' ', components: { Rating }})
这里有三件事要注意:
首先,我们使用 v-bind 简写从组件实例传递 props 属性:这就是 Vue.js 所谓的动态语法。当你想要传递一个字符串值时,你不需要知道它的具体值,为此,字面值语法(没有 v-bind 的普通属性)将起作用。但对我们而言,由于我们正在传递数字和布尔值,所以这很重要。
props 和数据属性在编译时被合并,所以我们不需要改变在视图模型或模板中调用属性的方式。出于同样的原因,我们不能在 props 数据属性中使用相同的名称。
最后,我们定义了一个级别属性,并将其作为 star 数值属性中的值传递给它。我们之所以这样做,不是直接使用级别属性,而是因为级别改变,值会发生变化。在 Vue.js 中,props 从父级传递给子级,而不是反过来传递,所以你不会改变父级的状态。这将违背 的原则,使事情难以调试。这就是为什么你不应该试图改变子组件内的 prop。相反,定义一个使用 props 的初始值作为自声的本地数据属性。
最后的润色
在这一天马上过去之前,我们应该了解 Vue.js 最后一个惊奇的地方:prop 的验证。
Vue.js 允许你在传递给组件之前控制 prop。您可以执行四个主要的事情:检查类型,要求定义一个 prop 属性,设置默认值,并执行自定义验证。
export default { props: { grade: { type: Number, required: true }, maxStars: { type: Number, default: 5 }, hasCounter: { type: Boolean, default: true } }, ...}
我们使用类型检查来确保将正确类型的数据传递给组件。这将对我们忘记使用动态语法来传递非字符串值的错误特别有用。我们也确保通过要求它填写 grade 属性。对于其他 props 属性,我们定义了默认值,所以即使没有传递自定义数据,组件也能正常工作。
现在我们可以简单地通过执行以下操作来实例化组件:
就是这样!您刚刚创建了第一个 Vue.js 组件,并探索了许多概念
本文作者:凉凉_
本文发布时间:2018年01月29日
本文来自云栖社区合作伙伴,了解相关信息可以关注csdn.net网站。