React Redux - 条件选择器

时间:2016-06-26 19:45:23

标签: reactjs redux reselect

在我的应用程序中,我只有在用户登录时才有很多有意义的状态。

当用户登录并直接导航到某个页面时,路由器会显示该页面,但必须进行异步调用,因此尚未填充该状态。

现在,假设我必须在导航栏上显示一个必须占用状态的按钮,但是自异步调用完成后,此状态不会被填充。

更实际的是,我有这个选择器:

export const getSelectedCustomer = state => state.systems.selectedCustomer;

有了这个,没有问题,因为selectedCustomerinitialState缩减器的一部分

问题出在这个选择器中:

export const getSelectedCustomerName = state => {
    return state.systems.entities[getSelectedCustomer(state)].customer;
}

entities中状态initialState的一部分是一个空数组,将在异步调用时填充。

因此,当应用程序启动并且我映射(使用connect - mapStateToProps)时,选择器getSelectedCustomerName我收到错误,因为entities为空且确定customer字段还不存在

一个简单的解决方案,如果采用一些if-else,但我必须在应用程序的“每个”部分执行此操作。

我在问是否有更好的解决方案来避免这种情况......

1 个答案:

答案 0 :(得分:2)

pip

这是Null Object pattern 的经典示例(希望您不要介意Ruby中的代码)。