具有多种用途的React + Redux状态



我没有代码可以分享。我使用的模板是使用react + Redux构建的。

我遇到的问题是,如果我想让多个用户使用该应用程序,那么状态将与所有人共享。用户之间没有区别。所以我遇到的问题是一个用户会看到另一个刚刚登录的用户的状态。另一个是我正在获取数据以显示在图表中,不知何故,每次获取数据时数字都在增加,如果多个用户登录则会变得更糟。

我的问题是……你如何管理一个带有多个用户和Redux的react应用程序?似乎我找到的大多数教程都假设只有一个用户。

最简单的解决方案是,如果你的APP正在使用从API获取的数据库,每次你开始你的请求,你应该首先清除数据

这是我的减速器的例子(我使用redux-tools)

reducers: {
getRoleDetailStart(state) {
state[CURRENT_NAMESPACE].data = {};
state[CURRENT_NAMESPACE].isLoading = true;
state[CURRENT_NAMESPACE].error = null;
},
getRoleDetailSuccess(state, action) {
const { data } = action.payload;
state[CURRENT_NAMESPACE].data = data;
state[CURRENT_NAMESPACE].isLoading = false;
state[CURRENT_NAMESPACE].error = null;
},
getRoleDetailError(state, action) {
state.isLoading = false;
state.error = action.payload;
},
},

操作
export const fetchRootGetRoleDetail = ({ roleId }) => async (
dispatch,
getState
) => {
const state = getState();
const selectedState = state[PARENT_NAMESPACE][CURRENT_NAMESPACE];
const { isLoading } = selectedState;
if (isLoading) return;
try {
dispatch(getRoleDetailStart());
const data = await restRootGetRoleDetail({
roleId,
});
dispatch(
getRoleDetailSuccess({
data,
})
);
} catch (err) {
if (isValidJSON(err)) {
return dispatch(getRoleDetailError(JSON.parse(err).message));
}
dispatch(getRoleDetailError(err));
}
};

相关内容

  • 没有找到相关文章

最新更新