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仍不在存储中 我的问题是,从组件来看,这并没有告诉我客户

在redux存储中,例如,如果我将客户数据存储为:

{
  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
。。。它不会触发错误来捕获。。。