vue中兄弟组件之间的联动,兄弟组件之间的传值_vue3的2个兄弟文件的变量怎么关联起来相互影响

46 阅读3分钟

img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

<template>
  <div class="initail">
    <ul>
      <li v-for="(item,key,index) of cities" :key="index"
       @click="handleInitail">{{key}}</li>
    </ul>
  </div>
</template>

<script>
export default {
  name: 'Initail',
  props: {
    cities: Object
  },
  methods: {
    handleInitail (e) {
      console.log(e.target.innerText)
      this.$emit('message', e.target.innerText)
    }
  }
}
</script

第二步:父组件接收子组件A的传值,并将值保存到自己的data中,并取名letter(letter:字母)

第三步:父组件将letter传递给子组件B

子组件B通过props接收该值

下面就是子组件B监听到letter值的变化后作出反应:用watch对象来监听

补充知识:Better-scroll插件中,提供一个方法,到指定的标签区域,或者说是,让某个指定的dom,出现到屏幕中,展现给用户。

需要注意的是:

上图中div.ct中的ref=“key”,由于此处是循环绑定的dom,所以打印dom的结果:

是个数组,第一位是dom元素

所以,在使用scrollElement()方法的时候:

方法2:bus总线传值

思路:在Vue的原型上创建一个属性bus,该属性的值为new Vue(),即bus也是一个vue实例

第一步:在main.js中创建bus总线

第二步:在子组件A中,通过bus总线抛出信息和值。this.bus就是Vue实例,$emit也是上面的方法

第三步:在子组件B中,在created或mounted等生命周期函数上,监听那个事件和获取那个值。

注意:bus总线,是联动的,当A组件触动bus总线的时候,B组件中也会响应式的触发。

B组件中的bus,需要在函数中,比如:created函数、mounted函数、甚至是data函数。

data中:

生命周期函数中:

总之,监听bus总线的事件,必须要函数中,但是该函数执行的时候,跟bus总线无关。

路由组件中:两个组件不在一个页面,bus总线即使改变了值,当点击另一个路由路径的时候,data函数又将值初始化了,

所以说,bus总线作用的两个组件应该在同一页面中。当然,可以用一个仓库来存储这个改变的值,比如:vuex、webStorage、数据库等等。

比如:bus在vuex中使用:

A组件:



**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e29421cc08234df5aa462f2d0326b028~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771325923&x-signature=5V2wdgTauQZ2ExJeLZp8%2B36gaxs%3D)
![img](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/cf4c7a1575744a599ca6a6560de1648e~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771325923&x-signature=X2lF9DIUgDqZCKqIejVuePX%2Fx28%3D)

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**