如何为尚不存在的状态创建redux选择器

时间:2017-07-27 07:26:13

标签: redux react-redux reselect

我找到了绕过Redux回声系统的方法,我遇到了以下结论:假设我有一个React组件,它应该使用选择器连接到redux状态部分,但是这部分还不存在(undefined) )。因此,在运行它时,我得到一个“get on undefined”错误。是否有可能以某种方式定义并将选择器连接到组件,即使状态部分还不存在?

我正在使用reselect来创建选择器,这是我用来避免抛出错误的解决方法:

import { createSelector } from 'reselect';

const selectLogin = (state) => state

const loginDataSelector = () => createSelector(
  selectLogin,
  (authState) => authState.get("auth")?
   authState.get("auth").get('loginData'):undefined
);

export {
  loginDataSelector
};

通过这种方式,selectLogin选择器似乎监视整个状态树。有没有更好的方法来做到这一点,或者对于具有未定义(=尚未设置)状态部分的选择器是否有最佳实践?

1 个答案:

答案 0 :(得分:1)

您可以使用ES6默认值来解决此问题。

也不能使用允许您安全访问深层属性的getIn

import { createSelector } from 'reselect';
import { Map } from 'immutable';

const selectLogin = (state) => state

const loginDataSelector = createSelector(
  selectLogin,
  (authState = Map()) => authState.getIn(["auth", "loginData"])
);
相关问题