1.父组件与子组件传值props
1.1定义父组件,父组件传递 inputText这个数值给子组件:
1.2定义子组件,子组件通过 props方法获取父组件传递过来的值。props中可以定义能接收的数据类型,如果不符合会报错。
注意:父子组件传值,数据是异步请求,有可能数据渲染时报错
- 原因:异步请求时,数据还没有获取到但是此时已经渲染节点了
- 解决方案:可以在父组件需要传递数据的节点加上 v-if = isReady(isReady默认为false),异步请求获取数据后(isReady赋值为true),v-if = isReady
2.子组件向父组件传递数据
子组件通过$emit方法(用来触发事件,详情见官网)传递参数:
子组件:
image.png
父组件:
image.png
为了方便起见,我们为这种模式提供一个缩写,即 .sync
修饰符,如
使用.sync修饰符:
详情见api:https://cn.vuejs.org/v2/guide/components-custom-events.html#sync-修饰符
3.子组件向子组件传递数据
Vue 没有直接子对子传参的方法,建议将需要传递数据的子组件,都合并为一个组件。如果一定需要子对子传参,可以先从传到父组件,再传到子组件。
或者通过eventBus或vuex(小项目少页面用eventBus,大项目多页面使用 vuex)传值:
3.1通过eventBus(即通过on监听、emit触发的方式)
3.1.1定义一个新的vue实例专门用于传递数据,并导出
image.png
3.1.2定义传递的方法名和传输内容,点击事件或钩子函数触发eventBus.emit事件
image.png
3.1.3接收传递过来的数据
注意:enentBus是一个另一个新的Vue实例,区分两个this所代表得vue实例
image.png
3.2vuex进行传值
详情见:https://baijiahao.baidu.com/s?id=1618794879569468435&wfr=spider&for=pc
4.画面迁移的组件之间传递数据
4.1通过路由带参数进行传值,例:两个组件 A和B,A组件通过query把orderId传递给B组件
A组件传值写法:
注意:
4.1.1、Vue-详解设置路由导航的两种方法:声明式的导航 <router-link :to="..."> 和编程式的导航router.push(...)
****4.1.2、其中画面迁移有push和replace两种方式
****4.1.3、传参的方式又分为查询参数query(+path)和命名路由params(+name)两种方式:
- 命名路由搭配params,刷新页面参数会丢失
- 查询参数搭配query,刷新页面数据不会丢失
- 接受参数使用this.$router后面就是搭配路由的名称就能获取到参数的值
4.2通过设置 Session Storage缓存的形式进行传递
两个组件A和B,在A组件中设置缓存orderData
B组件就可以获取在A中设置的缓存了
5.通过provide/inject传值
6.通过listeners传值