这是我的商店代码
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
请帮我解决这个问题。提前感谢您的帮助。
3条答案
按热度按时间brqmpdu11#
当你使用
combineRreducers
时,你的store对象将与你传入的对象具有相同的键,并将reducer返回值作为值。所以在你的例子中,商店应该是这样的
字符串
问题是你试图在选择器中从
state.counter
而不是state.first.counter
中读取值只需将选择器更改为
型
hmtdttj42#
一条建议:写每一行代码都要有目的。
根据official documentation,
combineReducers
用于下面提到的场景。随着你的应用变得越来越复杂,你会希望将reducing函数拆分为单独的函数,每个函数管理状态的独立部分。
你只有一个减速器,那么就不需要合并减速器了。只要简单地按下面的方法传递你的减速器就可以了。
字符串
让我知道如果你需要进一步的支持。
s2j5cfk03#
下面是对这个问题的一个稍微精炼的回答:
**方法一:**如果是connect方法,将stateMap到props,将propsMap到dispatch,则需要在访问state值时添加key名称。
方法二:如果您也使用useHook,则同样适用。
代码如下:
问题所示的例子所需的更改是
字符串
如果您使用方法1,则需要进行以下更改
型