美文网首页
vue2 普通组件之间共享数据

vue2 普通组件之间共享数据

作者: IamaStupid | 来源:发表于2020-05-14 11:06 被阅读0次

页面中多个没有关系的组件,共享一个数据,不使用vuex

方法一,共用一个js对象:
// testStore.js
export let testStore = {
  debug: true,
  state: {
    message: 'Hello!'
  },
  setMessageAction (newValue) {
    if (this.debug) console.log('setMessageAction triggered with', newValue)
    this.state.message = newValue
  },
  clearMessageAction () {
    if (this.debug) console.log('clearMessageAction triggered')
    this.state.message = ''
  }
}

// comA.vue
import { testStore } from '../testStore'

...
data () {
    return {
      testStore,
...
mounted () {
    this.setTableData()
    setTimeout(() => {
      this.testStore.setMessageAction('xxxxxx')
    }, 3000)
  }

// comB.vue
类似comA.vue

方法二,事件总线eventBus:
// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()

// comA.vue
<template>
    <button @click="sendMsg()">-</button>
</template>

<script> 
import { EventBus } from "../event-bus.js";
export default {
  methods: {
    sendMsg() {
      EventBus.$emit("aMsg", '来自A页面的消息');
    }
  },
  beforeDestory () {
    EventBus.$off()
  }
}; 
</script>


// comB.vue
<template>
  <p>{{msg}}</p>
</template>

<script> 
import { 
  EventBus 
} from "../event-bus.js";
export default {
  data(){
    return {
      msg: ''
    }
  },
  mounted() {
    EventBus.$on("aMsg", (msg) => {
      // A发送来的消息
      this.msg = msg;
    });
  },
  beforeDestory () {
    EventBus.$off()
  }
};
</script>

EventBus参考资料:https://zhuanlan.zhihu.com/p/72777951

相关文章

  • vue2 普通组件之间共享数据

    页面中多个没有关系的组件,共享一个数据,不使用vuex 方法一,共用一个js对象: 方法二,事件总线eventBu...

  • Vue现代化使用方法(四)--Vuex

    在组件内可以通过data属性共享数据,父子组件也可以通过props进行数据共享,但如果是兄弟跨组件之间的数据共享,...

  • Vuex

    Vuex是为了保存组件之间共享数据而诞生的,如果组件之间有要共享的数据可以直接挂载到vuex中,而不必通过父子组件...

  • Vuex学习

    1、组件之间共享数据的方式: 父-子:v-bind属性绑定子-父:v-on事件绑定兄弟组件之间共享数据:Event...

  • vue全家桶(4.1)

    5.状态管理 #5.1.兄弟组件之间共享数据的问题? 首先,我们需要了解下兄弟组件之间如何共享数据的问题 完成下列...

  • 状态管理(全局数据共享)

    vuex解决跨组件之间数据共享问题

  • 2018-03-25vue状态管理工具(vuex)

    vuex是为了保存组件之间数据的共享而诞生的,如果组件之间有要共享的数据,可以直接挂到vuex中区,而不必再通过父...

  • flutter状态管理(Provide)

    在前端开发中组件式开发方式往往都是需要用到各组件之间数据,状态的共享,兄弟组件,父子组件数据共享等。在vue中有v...

  • vue父子组件实现双向绑定实例

    Vue2的组件props通信方式 Vue2中组件props的数据流动改变只能单向流动,即只能由组件外通过DOM属性...

  • 20.数据共享

    Web组件(Servlet/JSP)的数据共享得需要作用域对象. 作用域对象存在的意义: 在多个Web组件之间共享...

网友评论

      本文标题:vue2 普通组件之间共享数据

      本文链接:https://www.haomeiwen.com/subject/nxgznhtx.html