React应用中Redux reducer直接返回action.payload修改布尔状态是否可行?
当然可以直接这么赋值!
完全没问题——既然你已经确认action.payload里已经包含了正确的目标布尔值(也就是当前状态的相反值),那在reducer里直接返回它是非常合理的做法。
Redux reducer的核心职责就是根据传入的action返回新的状态,只要你保证返回的是一个符合immutable要求的新状态值(布尔值属于原始类型,直接返回就满足这个要求),这种写法完全符合Redux的设计规范。
对比一下如果是在reducer里自己处理取反逻辑的写法:
export default function(state = true, action) { switch (action.type) { case 'SOME_ACTION_TYPE': return !state; // 自己在reducer里取反 default: return state; } }
而你现在的写法把取反的逻辑移到了action创建函数(也就是生成action.payload的地方),这样reducer的职责更单一——它只需要接收最终要设置的状态值,不用关心这个值是怎么计算出来的。这种拆分在复杂场景下会更灵活,比如未来如果这个布尔值的更新逻辑变了(比如不是简单取反,而是根据其他条件判断),你只需要修改action创建逻辑,不用动reducer。
唯一需要注意的是:确保在dispatch这个action的时候,action.payload确实是你需要的正确值(比如准确的相反布尔值),避免传递错误的payload导致状态不符合预期。
内容的提问来源于stack exchange,提问作者frisk0
相关产品推荐
相关产品推荐

