Rematch中如何正确处理异步action的loading状态?
我在用Rematch写一个数据请求的功能,想在请求开始和结束时更新loading状态,但发现状态没反应。我试过在effect里直接dispatch更新loading,但组件没重新渲染。
我的model是这样写的:
{
state: { data: [], loading: false },
effects: (dispatch) => ({
async fetchData(payload, rootState) {
dispatch.myModel.updateLoading(true);
const res = await api.getData();
dispatch.myModel.updateData(res);
dispatch.myModel.updateLoading(false);
}
}),
reducers: {
updateLoading: (state, payload) => ({ ...state, loading: payload }),
updateData: (state, payload) => ({ ...state, data: payload })
}
}
是不是哪里写错了?为啥loading状态变了但页面没更新?
Zz西西
Lv1
代码本身没毛病,问题在组件层,检查你的connect或useSelector有没有正确订阅这个model的state。如果懒得手动管理loading,直接装@rematch/loading插件,配置后自动给每个effect生成loading状态,省得自己写一堆updateLoading。
点赞
2
2026-02-28 19:06