vue 的组件与父子组件传值知识点

组件化
组件化就是一种拆解复杂问题的思路,一般是将复杂的页面拆解成一个个小的可复用的组件,方便组织和管理,扩展性强。
组件的使用步骤:
1.创建组件构造器 Vue.extend()
2.注册组件 Vue.component()
3.使用组件 实例作用范围使用

image.png

    

为什么组件中的data只能是函数



  

父子组件传递数据
通过props向子组件传递数据
通过事件向父组件发送消息

image.png

父组件通过props向子组件传递数据

image.png

注意点:props中的驼峰表示要使用'-'将大写转换成小写连接起来


image.png

子组件通过事件向父组件发送消息


image.png

一般props的值只能由父组件传过来的值进行改变。子组件不能修改,且一般input的v-model的value都是放在data(),错在value值放到props的中


image.png

image.png

解决方案
image.png

实现子组件输入框输入的值改变父子组件原来的值


image.png

image.png

image.png

父子组件的访问方式: $children

父组件访问子组件:使用refs
子组件访问父组件:使用$parent

我们先来看下children是一个数组类型,它包含所有子组件对象。
我们这里通过一个遍历,取出所有子组件的message状态。

image.png

$refs的使用:

$refs和ref指令通常是一起使用的。

首先,我们通过ref给某一个子组件绑定一个特定的ID。
其次,通过this.$refs.ID就可以访问到该组件了。

非父子组件通信
刚才我们讨论的都是父子组件间的通信,那如果是非父子关系呢?
非父子组件关系包括多个层级的组件,也包括兄弟组件的关系。
在Vue2.x中,有一种方案是通过中央事件总线,也就是一个中介来完成。
但是这种方案和直接使用Vuex的状态管理方案还是逊色很多。
并且Vuex提供了更多好用的功能,所以这里我们暂且不讨论这种方案,后续我们专门学习Vuex的状态管理。

你可能感兴趣的:(vue 的组件与父子组件传值知识点)