在Vue组件中监听Vuex store中的数据变化,需要使用Vuex提供的辅助函数mapStatemapGettersmapActionsmapMutations中的computed选项和watch选项。

使用mapState辅助函数可以将Vuex store中的数据映射到组件的计算属性中,当store中的数据发生变化时,计算属性会自动更新,从而触发组件的重新渲染。

使用watch选项可以监听Vuex store中的数据变化,当数据发生变化时,执行相应的回调函数,从而触发组件的重新渲染。

下面是一个简单的示例代码:

// store.js
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++
    }
  }
})

export default store

// MyComponent.vue
<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { mapState, mapMutations } from 'vuex'

export default {
  computed: {
    ...mapState(['count'])
  },
  methods: {
    ...mapMutations(['increment'])
  },
  watch: {
    count() {
      console.log('count changed')
    }
  }
}
</script>

在上面的示例代码中,MyComponent.vue组件通过mapState辅助函数将Vuex store中的count数据映射到了组件的计算属性count中,当store中的数据发生变化时,计算属性会自动更新,从而触发组件的重新渲染。同时,使用mapMutations辅助函数将Vuex store中的increment方法映射到组件的increment方法中,点击按钮时可以执行这个方法,从而修改store中的数据。在watch选项中,监听了count数据的变化,当数据发生变化时,会执行相应的回调函数,从而触发组件的重新渲染

vuex某个数据发生变化 用到数据的组件怎么监听触发重新渲染

原文地址: https://www.cveoy.top/t/topic/egvJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录