Redux 工具包中有一个设置初始状态的选项。所以我们可以创建一个reducer来设置初始状态。
我的问题是,它会更新所有使用该状态的组件吗?
import { createSlice } from '@reduxjs/toolkit'
const counterSlice = createSlice({
name: 'counter',
initialState: {name: 'stack'},
reducers: {
reset: () => initalState,
},
})
我在组件 A 中使用 name state,然后从组件 B 调用重置减速器。即使状态更新,组件 A 也不会重新渲染。这是为什么?我想知道这个
initialState
功能是否没有更新相关内容
确保以正确的方式创建
reducer
。在您给定的代码中,重置减速器尚未正确创建。
您应该这样做:
const counterSlice = createSlice({
name: 'counter',
initialState: { name: 'stack' },
reducers: {
resetState: (state, action) => {
return state = { name: 'default' };
另外,请确保您正确地发送:
const ComponentB = () => {
const name = useSelector(state => state.counter.name);
const dispatch = useDispatch();
const handleReset = () => {
dispatch(resetState());
};
return (
<div>
<h1>Counter Name: {name}</h1>
<button onClick={handleReset}>Reset Name</button>
</div>
);
};