vue.js - vuex 如何像 redux 一样改变商店中的多个属性?

标签 vue.js vuejs2 react-redux vuex

Vuex 的状态突变方法如下:

const store = new Vuex.Store({
  state: {
    fetching: false,
    board: null
  },
  mutations: {
    setFething (state) {
      state.fetching = true
    },
    setCurrentBoard (state, board) {
       state.board = board
       state.fetching = false
    }
  }
})

但我担心它会独立触发 boardfetching 的两次更改,而不是一次更改,我的 View 将针对每个属性更新两次。 这只是一个简单的例子,我有更复杂的属性突变,最好通过一个突变进行突变。在 vuex 中可以吗?

我喜欢 redux 方法来返回只改变一次的状态对象:

initialState = { board: null, fetching: false };
export default function reducer(state = initialState, action = {}) {
  switch (action.type) {
    case Constants.SET_FETCHING:
      return { ...state, fetching: true };

    case Constants.SET_CURRENT_BOARD:
      return { ...state, ...action.board, fetching: false };
 }

最佳答案

那么,您正在寻找这样的东西吗?

var store = new Vuex.Store({
  state: {
    id: 1,
    name: 'aaa',
    last: 'bbb'
  },
  mutations: {
    change (state, payload) {
      state = Object.assign(state, payload)
    }
  }
})

new Vue({
  el: '#app',
  store,
  created () {
    setTimeout(_ => {
      this.$store.commit('change', {
        id: 2,
        last: 'ccc'
      })
    }, 2000)
    setTimeout(_ => {
      this.$store.commit('change', {
        name: 'ddd'
      })
    }, 4000)
  }
})
<div id="app">
  {{ $store.state.id }}
  <br>
  {{ $store.state.name }}
  <br>
  {{ $store.state.last }}
</div>

<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vuex"></script>

关于vue.js - vuex 如何像 redux 一样改变商店中的多个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47239694/

相关文章:

testing - 在 Cypress 的某个元素中查找多个元素

javascript - React-Redux - 如何在不导致不相关组件不必要的重新渲染的情况下更新一个状态

vue.js - 窗口没有为 vue-slick 定义 Nuxt

javascript - 每当在 Vue.js 中更改任何变量时触发监视函数

javascript - Chrome/Safari 在不同时间触发点击事件

javascript - 如何使用 VueJS 正确地将数据传递给同级组件?

javascript - Laravel 和 Vue : where to put js/app. js?

javascript - 使用 src=require() 时来自 webpack 的 Vue.js 错误 "Cannot find module ' ./undefined'"

javascript - 使用 v-model 获取方法的结果

javascript - 如何在react-redux中等待特定的prop更改