摘要
在本文中年我们会了解什么是props,怎么利用props在父组件和子组件之间传递数据;什么是计算属性,还有什么是事件。
声明:为了文章的清爽性,在文章内部的代码演示中只会附上部分演示代码,main.js文件的代码通常不贴出,如果感兴趣可以前往代码仓库获取
作者:来自ArimaMisaki创作
说明:如果你想要对外界传入组件的数据进行合法性验证,则原先的props选项使用数组写法没有这个功能,为此,我们改用对象类型的props选项写法。props对象中的键为组件使用者传入数据,值为传入数据的数据类型。
说明:对象类型的props选项提供了多种数据验证方案,如
数量:{{count}}
状态:{{state}}
App根组件
说明:我们可以向外暴露computed选项,其可写作对象形式。对象中的每一项都是一个函数,它可以实时监听data中数据的变化,并且return一个计算后的新值。
{{count}}乘以2得:{{plus}}
App根组件
疑问:把方法定义在methods节点上不是一样吗,为何非要定义在computed节点上?
解释:相对于方法来说,计算属性会缓存计算的结果,只有计算属性的依赖项发生变化时,才会重新进行计算,因此计算属性的性能更好。
说明:在封装组件时,为了让组件的使用者可以监听到组件内状态的变化,此时需要用到组件的自定义事件。
使用步骤:
说明:如果想要让自定义的事件可以访问到组件的数据,可以在自定义事件从参数列表第二位开始传入参数(第一位是自定义事件名称)。
Count的值是:{{count}}
App根组件
说明:当我们需要维护组件内外数据的同步时,可以在组件上使用v-model指令。
父向子同步:父组件通过v-bind将数据通过props传入子组件
子向父同步:在v-bind指令之前添加v-model指令,并且在子组件中声明emits自定义事件,当触发$emit事件时,更新父组件的数据。