vue组件传值,父子传值,子父传值,兄弟传值,组件主动获取数据及方法
2020-07-25 18:30
567 查看
一.父子传值
- 父组件引入子组件并注册
- 在标签通过动态绑定data里的值
- 子组件通过props接收父组件传递过来的参数
主动获取值
- 父组件里注册的子组件标签里写上ref
- 在mounted声明周期函数里打印this.$refs.name.msg即可
效果图
// 父组件 <template> <div> <fatherSon :num=num :go='go' ref="name"></fatherSon> </div> </template> <script> import fatherSon from './components/father_son' export default { components: { fatherSon }, data() { return { num: 6 } }, methods: { go() { alert('this is father') } }, mounted() { console.log(this.$refs.name.msg) } } </script>
// 子组件 <template> <div> <button @click="go">点我</button> <p>{{ num }}</p> </div> </template> <script> export default { props: ['num' ,'go'], data() { return { msg: '子组件' } }, } </script> <style> button { display: inline-block; width: 90px; height: 60px; font-size: 30px; line-height: 30px; margin-right: 20px; } p { font-size: 30px; } </style>
二.子父传值
- 子组件通过自定义事件,以$emit给父组件传送一个事件
- 父组件通过子组件传送过来的事件去写方法
主动获取值
- 子组件在mounted声明周期函数中通过this.$parent.msg即可
效果图
// 子组件 <template> <div> <button @click="add">+</button> <button @click="del">-</button> <p>{{ num }}</p> </div> </template> <script> export default { props: ['num' ,'go'], methods: { add() { this.$emit('addNum') }, del() { this.$emit('delNum') } }, mounted() { console.log(this.$parent.msg) }, data() { return { } }, } </script> <style> button { display: inline-block; width: 90px; height: 60px; font-size: 30px; line-height: 30px; margin-right: 20px; } p { font-size: 30px; } </style>
// 父组件 <template> <div> <fatherSon @addNum="add" @delNum="del" :num=num></fatherSon> </div> </template> <script> import fatherSon from './components/father_son' export default { components: { fatherSon }, data() { return { num: 6, msg: '父组件' } }, methods: { add() { this.num-- }, del() { this.num++ } }, } </script>
兄弟组件传值
- 新建一个js文件作为仓库
- 两个兄弟组件都引入这个js文件
- brother组件通过VueEvent.$emit(‘toSister’, this.msg)传数据,第一参数是数据名,第二个是参数是要传递的数据
- sister组件通过 VueEvent.$on(‘toSister’, function(data) {})接收数据,第一个参数是数据名,第二个参数是函数,data就是brother传递过来的数据
效果图
// 父组件 <template> <div> <brother></brother> <br> <br> <sister></sister> </div> </template> <script> import brother from './components/brother' import sister from './components/sister' export default { components: { brother, sister }, data() { return { } }, methods: { }, } </script>
// brother组件 <template> <div> brother组件 <button @click="go">传值</button> </div> </template> <script> import VueEvent from '../VueEvent' export default { methods: { go() { VueEvent.$emit('toSister', this.msg) } }, data() { return { msg: 'brother组件的msg' } }, } </script> <style> div { width: 100px; height: 30px; line-height: 30px; text-align: center; } </style>
// sister组件 <template> <div> sister组件 </div> </template> <script> import VueEvent from '../VueEvent' export default { mounted() { VueEvent.$on('toSister', function(data) { this.msg = data console.log(this.msg) }) }, data() { return { msg: 'sister组件' } }, } </script> <style> div { width: 100px; height: 30px; line-height: 30px; text-align: center; background-color: red; } </style>
相关文章推荐
- Vue父子组件通信之父组件主动获取子组件的数据和方法(二)
- Vue父子组件通信之子组件主动获取父组件的数据和方法(三)
- 个人笔记-----父子组件主动获取数据和方法( ref )【如有不对,欢迎指正】
- Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
- vue父组件从接口获取数据后传给子组件(父组件延迟传值)
- vue父组件异步获取数据传给子组件的方法
- vue2.0 兄弟组件数据传递方法
- vue教程3-05 vue组件数据传递、父子组件数据获取,slot,router路由
- Vue父子模版传值及组件传值的三种方法
- vue2.0父子组件间传递数据的方法
- vue组件数据传递、父子组件数据获取,slot,router路由功能示例
- 在VUE里使用全局公共组件(自定js文件)的简单方法,bus实现父子或兄弟组件用$emit的通信方法
- Vue 父子组件的数据传递、修改和更新方法
- vue 中 父子组件传值 子父组件传值 非父子组件传值
- vue.js--基础事件定义,获取数据,执行方法传值
- vue遇到过的坑(父组件向输入框组件传值进去,然后子组件利用传进来的数据进行数据绑定的问题与解决方法)
- vue 父子 兄弟 子父传值
- Vue全家桶之组件化开发(父子兄弟传值例子详解)
- iframe-父子-兄弟页面相互传值(jq和js两种方法)
- Vue子父组件间的数据传递