0

我在 Redux 回声系统中寻找出路,我遇到了以下情况:假设我有一个 React 组件,它应该使用选择器连接到 redux 状态部分,但是这部分还不存在(未定义)。所以,在运行它时,我得到一个“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选择器似乎监控了整个状态树。有没有更好的方法来做到这一点,或者对于具有未定义(=尚未设置)状态部分的选择器是否有最佳实践?

4

1 回答 1

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"])
);
于 2017-08-23T19:52:26.560 回答