vue:非父子组件传值

一、非父子组件传值

只要不是父子组件,其他关系的组件都是非父子组件。

非父子组件传值方式:通过中间对象new Vue()

二、代码示例

代码中,在main.js设置中间对象,在App.vue引入One.vue和Two.vue

它们之间的传值关系:

One.vue传值给Two.vue

main.js

import Vue from 'vue'
import App from './App'

// 非父子组件传值:通过中间对象。
// 这个空实例有vue的所有功能,只是不能操作dom,生命周期走到created就结束了
Vue.prototype.$center = new Vue();

new Vue({
  el: '#app',
  render: h=>h(App)
})

App.vue

<template>
<div id="app">
    one:<input type="checkbox" v-model="isShowOne"/>
    two:<input type="checkbox" v-model="isShowTwo"/>

    <hr/>

    <One v-if="isShowOne"/>
    <hr/>
    <Two v-if="isShowTwo"/>

</div>
</template>

<script>
import One from './components/One'
import Two from './components/Two'
export default {
    components: {
        One,
        Two
    },
    data(){
        return {
            isShowOne: true,
            isShowTwo: true
        }
    }
}
</script>

<style>

</style>

One.vue

<template>
<div class="one">
    <h1>one组件</h1>
    <input type="text" ref="in"/>
    <button @click="btnAction">发送</button>
</div>
</template>

<script>
export default {
    methods: {
        btnAction(){
            let val = this.$refs.in.value;
            // 触发事件
            this.$center.$emit('send', val);
        }
    }
}
</script>

<style>

</style>

Two.vue

<template>
<div class="two">
    <h1>two组件</h1>
    <p>接收到的数据是:{{oneVal}}</p>
</div>
</template>

<script>

export default {
    data(){
        return {
            oneVal: null
        }
    },
    created(){
        // 事件一定要满足先监听后触发的规则
        this.$center.$on('send', (data)=>{
            this.oneVal = data;
        })
    },
    beforeDestroy(){
        //移除监听
        this.$center.$off('send');
    }
}
</script>

<style>

</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值