vue组件的传值
首先我们要了解什么叫做组件?
vue最大的特点,一个是组件化,另一个则是数据驱动,两大特点也是vue的核心。 组件化通俗来讲就是可以将页面和页面中可复用的元素看做成组件,写页面的过程,就是写组件,然后页面是由这些组件“拼接”起来的组件树。 我们都知道 Vue 作为一个轻量级的前端框架,其核心就是组件化开发。Vue 就是由一个一个的组件构成的,组件化是它的精髓,也是最强大的功能之一。而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。
但在实际项目开发过程中,我们需要访问其他组件的数据,这样就就有了组件通信的问题。在 vue 中组件之间的关系有:父子,兄弟,隔代。针对不同的关系,怎么实现数据传递,就是接下来要讲的。
1父组件传值给子组件
- 在Children子组件中定义一个props:['父组件传递的名字']
- 也可以定义一个默认值props:{msg:{type:String,default:"我是默认值"}}
- 注意这种传值是单向的,无法改变父组件的值(引用类型列外) Father.vue
Children.vue
-
在子组件中使用props(可以是数组也可以是对象)接收即可。可以传多个属性。
-
子组件接收的父组件的值分为引用类型和普通类型两种:**
-
普通类型:字符串(String)、数字(Number)、布尔值(Boolean)、空(Null)**
-
引用类型:数组(Array)、对象(Object)**
2子组件传递父组件
- 子组件往父组件传递的时候就需要使用this.$emit('父组件监听的事件',传递的值)
Father.vue
Children.vue
3兄弟组件传值
- 需要运用到emit的监听和触发,定义一个公共的事件Eventbus作为他们的“媒介”
Father.vue
Children1.vue
Children2.vue
EventBus.js 文件,并暴露一个 vue 实例