如何在Vuex状态创建中使用函数

6gpjuf90  于 7个月前  发布在  Vue.js
关注(0)|答案(2)|浏览(65)

我尝试使用稍后定义的getter来设置部分状态

export const store = new Vuex.Store({
  state : {
    a : 1,
    b : getters.multiply(a)
  },
  getters : {
    multiply : (state) => (param) => return param * 2
  },
})

字符串
这是不允许的,因为getter还没有准备好(我想)。
文档中确实说明了Vuex的state属性可以使用一个函数来创建数据-但我还没有看到任何示例,完整的状态是否需要通过函数调用或一些 prop 来初始化。
任何帮助感激不尽。

i2byvkas

i2byvkas1#

通常getters是获取状态数据的方法。它不应该是2种方式。在上面的例子中,你可以这样做:

const multiply = (params) => params * 2
const INIT_VALUE = 1

export const store = new Vuex.Store({
  state : {
    a : INIT_VALUE,
    b : multiply(INIT_VALUE)
  }
})

字符串

5f0d552i

5f0d552i2#

除了@ittus的answer
您可能需要一个更独立的“状态初始化函数”,它将返回初始Vuex状态对象的一个相当独立的示例。这将允许Vuex module在需要时重用^1。例如:

const INIT_VALUE = 1;

// Functions

const multiply = (a, b = 2) => Number(a * b);

// const defaultState = a => ({ /* ... */ });

function defaultState(a) {
  return {
    a,
    b: multiply(a)
  }
}

// State

const state = defaultState(INIT_VALUE);

// Store

export const store = new Vuex.Store({
  strict: true,
  state
});

字符串
关于defaultState的“箭头”与“常规”功能:Vue JS: Difference of data() { return {} } vs data:() => ({ })

相关问题