在vue 中组件间的传参是必不可少的,下面说下几种传参方式
1.父组件传值给子组件,首先父组件发送的形式是用bind(用缩写:)绑定值到子组件身上。然后子组件用属性props接收
2.子组件传值父组件,首先是子组件发送的形式是this.$emit(事件名,需要发送的值),事件名:父组件on监听的方法,父组件第一件事就是监听子组件发送过来的事件名,@事件名=获取值的方法。获取值的方法(值)*,就这样拿到了儿子发过来的值
3.兄弟传值,两个都要引入公共js->bus。首先是发送者,this.$emit(名字,值)。然后是接受者,this.$on("传过来的那个名字",函数(值)),这里要注意的是接受者的这个监听事件应该是放在钩子mounted事件内。同时注意this指向问题。(可用封装方法)
上面几种是常用的方式 还可以使用provide 和 inject 这个是在父组件 provide 注入数据 ,在每个子组件中都可以通过 inject 去接受参数
在父组件中
export default { data() { return { msg: 'hello vue+webpack', fromName : { msg : 'i love you' }, loginForm: { username: "cg", password: "23455", code: "2334", redomStr: "" }, } }, provide () { return { fromHome: this.fromName } },
在子组件中
<template> <div>我是注入的看看 <div>{{fromHome.msg}}</div> </div> </template> <script> export default { inject: ['fromHome'] } </script>
这里要注意的是 在父组件中注入的参数需要是data 种注册的对象,否则在父组件中值变化后在子组件中不会更新。