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

问题描述 投票:0回答:2

我正在尝试使用稍后定义的吸气剂来设置我的状态的一部分

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

这是不允许的,因为吸气剂还没有准备好(我认为)。

文档确实指出 Vuex 状态属性可以采用函数来创建数据 - 但我还没有看到任何示例,完整状态是否需要通过函数调用或某些道具来初始化。

任何帮助表示赞赏。

javascript vue.js vuejs2 vuex
2个回答
3
投票

通常

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

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

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

0
投票

除了@ittus回答

您可能需要一个更独立的“状态初始化函数”,它将返回初始 Vuex 状态对象的一个相当隔离的实例。如果需要,这将允许 Vuex module 重用 ^1。例如:

const INIT_VALUE = 1;

// Functions

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

const defaultState = a => ({
    a,
    b: multiply(a)
});

// State

const state = defaultState(INIT_VALUE);

// Store

export const store = new Vuex.Store({
  strict: true,
  state
});
© www.soinside.com 2019 - 2024. All rights reserved.