咱们在开发过程当中,不可能只在一个组件里面写东西,当一个组件的内容过多时候,咱们会把各个块的内容分别做为一个单独的组件分离出去,这些分离出去的组件被叫作子组件,可是通常请求数据的话仍是在父组件(最大的外层中)钟情求,这就要求咱们要将父组件中的数据传给各个子组件,子组件才能经过v-for指令进行遍历,遍历以后再经过item将数据传给比本身更小的子组件,这样以此类推,最后的小组件再来展现数据,组件开发中不可能由于某个小组件而单独发一次请求,这就须要用到组件之间的通讯vue
一般状况下子组件是不能直接访问父组件或者Vue实例中的数据的,可是在开发中,每每有一些数据确实须要从上层传递到下层:好比在一个页面中,咱们从服务器请求到了不少数据,其中一部分数据并不是使咱们整个大页面组件来展现的,而是须要下面的子组件进行展现,这个时候并不会让子组件再次发送一次网络请求,而是直接让大组件(父组件)将数据传递给小组件(子组件)数组
官方给出的方法
父组件经过props给子组件传递数据
<子组件标签 :子组件的props属性 = "父组件的data变量" /> </子组件标签>
子组件经过自定义事件给父组件发送消息服务器
真实开发中 ,Vue实例和子组件的通讯 与 父组件和子组件的通讯过程是同样的vue实例自己能够看作父组件
子组件中props的数据验证
在子组件中 props能够是数组,也能够是对象,当须要对props进行类型验证时,就须要使用对象语法了,对象的好处的是能够指定必须传过来的数据类型,在开发中不多用数组的写法网络
//props: ['cmovies', 'cmessage'], props:{ //1.类型限制 // cmovies:Array, // cmessage:String, //2.提供默认值 以及必传值 cmovies:{ type:Array, default(){ return [] } }, cmessage:{ type:String, default:"xiaosaobi", required:true } },