每个属性都需要一个reducer吗?
P粉124070451
P粉124070451 2023-08-17 14:47:45
[React讨论组]
<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) =&gt; { // Redux Toolkit 允许我们在 reducer 中编写“修改”逻辑。它实际上不会改变状态,因为它使用 Immer 库, // 它检测到对“draft state”的更改,并基于这些更改生成一个全新的不可变状态。 // 此外,这些函数不需要返回语句。 state.value += 1 }, decrement: (state) =&gt; { state.value -= 1 }, incrementByAmount: (state, action) =&gt; { 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;
    },
  },
})

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号