Vuex 简单实现一个类似于 setState 的方法

53 阅读1分钟

Vuex 的 state 是一个对象,不能直接修改 state 的值,需要使用 mutations 来修改 state 的值。这里简单实现一个类似于 React 的 setState 的方法,实现修改 state 的值。

export default {
  namespaced: true,
  state: {
    selectItem: {}, // 搜索选中的数据
  },
  mutations: {
    /**
     * @description 修改 state 值
     */
    setState(state, data) {
      if (!(Object.prototype.toString.call(data) === '[object Object]')) return

      for (let [key, value] of Object.entries(data)) {
        // Object.hasOwnProperty.call(state, key) && (state[key] = value)
        Object.hasOwn(state, key) && (state[key] = value)
      }
    },
  },
}