reactjs - combineReducers() 在 React Redux 中不起作用
问题描述
这是我的商店代码
import { combineReducers, createStore } from "redux";
import counterReducer from "./../Counter/counter.reducer";
const rootReducer = combineReducers({ first: counterReducer });
const store = createStore(rootReducer);
export default store;
和组件:
const Sid = () => {
const num = useSelector((state) => state.counter);
const dispatch = useDispatch();
return (
<div>
<h1>Count value is {num}</h1>
<button onClick={() => dispatch(increaseCounter())}>Add 5 </button>
<button onClick={() => dispatch(decreaseCounter())}>Subtract 50</button>
</div>
);
};
输出:
代码工作正常如果我不使用组合减速器并直接在createStore() function
请帮我解决这个问题。在此先感谢您的帮助。
解决方案
当你使用 时combineRreducers
,你的 store 对象将与你传入的对象具有相同的键,并以 reducer 返回值作为值。
所以在你的情况下,商店应该是这样的
{
first: {
counter: 0
}
}
问题是您尝试从state.counter
选择器中读取值而不是state.first.counter
只需将您的选择器更改为
const num = useSelector(state => state.first.counter);
推荐阅读
- sql - 在sql中表示矩形集合的好方法
- c# - 从 LINQ SQLite 查询 C# 返回实际字符串值
- haskell - 解决单位矩阵的 Haskell 脚本
- java - 在 scala 中扩展 java 类并覆盖方法
- c# - 从名为 SqlCommand 的 C# 将数据附加到 Google 表格
- authentication - Limesurvey - 结果分布
- gcc - Cygwin <=> GCC 版本映射?
- c++ - QT QML Translation 重新翻译
- java - Netty 有没有办法获得特定的 TCP 选项?
- powershell - 查找和替换后正在添加新行