【发布时间】:2022-01-20 00:04:43
【问题描述】:
如果我想在状态发生变化时分派一个动作,目前我的做法是通过在组件useEffect 挂钩中监听该状态并在该状态发生变化时分派一个动作。
例如,假设我有以下切片:
export const updateBar = createAsyncThunk("mySlice/updateBar", async () => {
const { data } = await axios.get("/some/api");
return data;
});
const mySlice = createSlice({
name: "mySlice",
initialState: {
foo: false,
bar: 0,
},
reducers: {
updateFoo: (state, { payload }) => {
state.foo = payload;
},
},
extraReducers: {
[updateBar.fulfilled]: (state, { payload }) => {
state.bar = payload;
},
},
});
现在如果我想在foo发生变化时更新bar,我必须去组件端添加以下代码:
const Component = () => {
const foo = useSelector((state) => state.mySlice.foo);
const dispatch = useDispatch();
useEffect(() => {
dispatch(updateBar());
}, [dispatch, foo]);
return <div></div>;
};
我想知道当foo 在redux 切片中发生变化时是否可以调用updateBar 而不必触及组件端,因为我认为如果将所有状态副作用都从组件。
【问题讨论】:
-
这能回答你的问题吗? stackoverflow.com/questions/36557089/…
标签: javascript reactjs redux react-redux redux-toolkit