每个属性都需要一个reducer吗?
P粉124070451
P粉124070451 2023-08-17 14:47:45
0
1
438
<p>我正在跟随这个教程来递增一个数字。</p> <p>它是有效的,但是现在我想要将其实现到大约100个配置值上。我需要复制counterSlice.js 100次还是需要用一个具有100个属性的对象替换数字?</p> <p>counterSlice.js</p> <pre class="brush:php;toolbar:false;">export const counterSlice = createSlice({ name: 'counter', initialState: { value: 0, }, reducers: { increment: (state) => { // Redux Toolkit 允许我们在 reducer 中编写“修改”逻辑。它实际上不会改变状态,因为它使用 Immer 库, // 它检测到对“draft state”的更改,并基于这些更改生成一个全新的不可变状态。 // 此外,这些函数不需要返回语句。 state.value += 1 }, decrement: (state) => { state.value -= 1 }, incrementByAmount: (state, action) => { state.value += action.payload }, }, }) // 为每个 case reducer 函数生成 action creators export const { increment, decrement, incrementByAmount } = counterSlice.actions export default counterSlice.reducer</pre> <p><br /></p>
P粉124070451
P粉124070451

全部回复(1)
P粉404539732

在某些情况下,明确为每个状态字段创建函数可能是明智的。但是如果你确实有大约100个状态字段,那么你需要采用更通用的方法。

我建议在reducer函数的payload中包含一个keyvalue字段。

export const configSlice = createSlice({
  name: 'config',
  initialState: {},
  reducers: {
    setConfigValue: (state, action) => {
      const { key, value } = action.payload;

      state[key] = value;
    },
  },
})

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板