Redux—如何区分未加载内容和未加载内容之间的差异';不存在于后端?
在redux存储中,例如,如果我将客户数据存储为:Redux—如何区分未加载内容和未加载内容之间的差异';不存在于后端?,redux,react-redux,Redux,React Redux,在redux存储中,例如,如果我将客户数据存储为: { data: [1, 2, 3], customers: { 1: { ... }, 2: { ... }, 3: { ... } } } 在一个组件中,当我尝试显示id为4的customer时,看到商店中不存在该客户,我会尝试使用API调用获取该客户。现在,假设客户4实际上不存在于后端数据库中。API调用结束时,存储将更新,并且customer 4仍不在存储中 我的问题是,从组件来看,这并没有告诉我客户
{
data: [1, 2, 3],
customers: {
1: { ... },
2: { ... },
3: { ... }
}
}
在一个组件中,当我尝试显示id为4
的customer
时,看到商店中不存在该客户,我会尝试使用API调用获取该客户。现在,假设客户4
实际上不存在于后端数据库中。API调用结束时,存储将更新,并且customer 4
仍不在存储中
我的问题是,从组件来看,这并没有告诉我客户是否尚未加载(在这种情况下,我需要再次加载),或者客户实际上不存在于后端数据库中(在这种情况下,我需要显示适当的消息)。在Redux中通常如何处理此问题?您可能需要将
错误
字段添加到Redux存储中。在进行API调用时,如果在DB中找不到客户,则更新错误
{
data: [1, 2, 3],
customers: {
1: { ... },
2: { ... },
3: { ... }
},
error: null,
}
//api.js
获取(“backend url.com/customer/4”)
。然后(res=>res.json)
。然后(结果=>{
//不要忘记清除减速器中的错误
调度(添加客户(结果));
})
.catch(错误=>{
//找不到客户
调度(存储错误(err));
});
然后在组件中
//component.js
...
const{customers,data,error}=useReduxStore();
返回(
{错误?:}
);
如果客户是空对象,则可以在加载客户后签入组件。。。然后它被加载但不存在,如果它是null
。。。然后你需要启动一个redux操作来加载它
-
如果出现错误
。。。然后,您可能会显示一条一般性错误消息,如出现了一些问题,这可能是internet连接问题,也可能是后端的内部问题
export const getCustomer = () => dispatch => {
dispatch({ type: 'GET_CUSTOMER_START' });
axios
.get('your api end point')
.then(res => {
const customer = res.data;
dispatch({
type: 'GET_CUSTOMER_SUCCESS',
payload: {
customer: customer || {},
},
});
})
.catch(error => {
dispatch({
type: 'GET_CUSTOMER_FAIL',
payload: { error },
});
});
};
如果api调用未能返回客户(因为该客户不存在),则可以向redux存储中的每个客户添加一个
loaded
标志true/false
。。。它不会触发错误来捕获。。。