vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)
生活随笔
收集整理的這篇文章主要介紹了
vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 子組件向父組件傳值
子組件:
<template><div>子組件:<span>{{childValue}}</span><!-- 定義一個子組件傳值的方法 --><input type="button" value="點擊觸發(fā)" @click="childClick"></div> </template> <script>export default {data () {return {childValue: '我是子組件的數(shù)據(jù)'}},methods: {childClick () {// childByValue是在父組件on監(jiān)聽的方法// 第二個參數(shù)this.childValue是需要傳的值this.$emit('childByValue', this.childValue)}}} </script>父組件:
<template><div>父組件:<span>{{name}}</span><br><br><!-- 引入子組件 定義一個on的方法監(jiān)聽子組件的狀態(tài)--><child v-on:childByValue="childByValue"></child></div> </template> <script>import child from './child'export default {components: {child},data () {return {name: ''}},methods: {childByValue: function (childValue) {// childValue就是子組件傳過來的值this.name = childValue}}} </scrip2. 非父子組件進行傳值
非父子組件之間傳值,需要定義個公共的公共實例文件bus.js,作為中間倉庫來傳值,不然路由組件之間達(dá)不到傳值的效果。公共bus.js
//bus.js import Vue from 'vue' export default new Vue()組件A:
<template><div>A組件:<span>{{elementValue}}</span><input type="button" value="點擊觸發(fā)" @click="elementByValue"></div> </template> <script>// 引入公共的bug,來做為中間傳達(dá)的工具import Bus from './bus.js'export default {data () {return {elementValue: 4}},methods: {elementByValue: function () {Bus.$emit('val', this.elementValue)}}} </script>組件B:
<template><div>B組件:<input type="button" value="點擊觸發(fā)" @click="getData"><span>{{name}}</span></div> </template> <script>import Bus from './bus.js'export default {data () {return {name: 0}},mounted: function () {var vm = this// 用$on事件來接收參數(shù)Bus.$on('val', (data) => {console.log(data)vm.name = data})},methods: {getData: function () {this.name++}}} </script>注:用$on事件來接收參數(shù)時,會被重復(fù)多次執(zhí)行;
解決辦法:在$on事件前,執(zhí)行$off
Bus.$off('min');
Bus.$on('min', (data) => {
vm.min = data;
// console.log('測試數(shù)據(jù)!',data)
});
優(yōu)化處理非父子組件傳值方式:
Vue 中Bus使用
- 使用:兄弟組件之間傳值;
- 安裝: npm install vue-bus
- 在main.js 中引入vuebus:
| 全局引入 | import Vue from 'vue';import VueBus from 'vue-bus'; Vue.use(VueBus); |
在組件中使用
觸發(fā)事件:
this.$bus.emit("onslected",params)
應(yīng)對事件:
mounted:function(){
this.$bus.on("onslected",function(){
});
},
destroyed:function(){
this.$bus.off("onslected");
}
總結(jié)
以上是生活随笔為你收集整理的vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 破云里步重华为什么说自己姓薛_都说虎毒不
- 下一篇: 中科院信工所经验_2020计算机保研经验