初始状态Redux商店 - 无效道具

时间:2016-09-15 16:29:20

标签: reactjs redux

在与我的同事争论很多关于通过API获取的异步数据的初始状态值之后,我们认为将初始值设置为空数组/空对象而不是null是更清楚的。

但是当我今天实现它时,我意识到一个空对象会抛出一个PropTypes警告'即使支柱不是必需的,因为它不是空的。

将初始值设置为状态内的空对象是不好的做法?或者有没有办法不发出警告?

我目前的初始状态如下:

    const user = (state = {
      isRetrieving: false,
      isUpdating: false,
      hasRetrieved: false,
      didInvalidate: false,
      item: {},
    }, action) => {
      switch (action.type) {
        default:
          return state;
      }
    };

1 个答案:

答案 0 :(得分:0)

如果您的应用程序状态需要任何内容​​,您应该将其作为初始状态的一部分,始终使用空对象将使您在整个组件中添加防御性代码(您将使每个组件处理未定义的属性,当这不是一个有用的支持状态时。)

为了使它更简单,我认为这个问题类似于“我应该使我的类构造函数没有参数吗?”,问题是类似的,如果对象总是需要某个参数,使它成为构造函数参数,使它成为初始状态的一部分,不支持不需要的额外状态,因为它具有复杂的成本。

所以,不,不要让你的初始状态成为一个空对象(既不是null),因为它会让你的组件变得更复杂,尽管我认为这不会被认为是一个糟糕的redux练习。

最后,请注意,redux状态与组件道具不同,如果某些东西实际上是组件prop的默认值(而不是app状态所需的东西),则可以使用Component.defaultProps,{{ 1}}是React组件的静态成员,其值为默认设置为defaultProps,或者您甚至可以从函数返回此默认道具, 见https://facebook.github.io/react/docs/reusable-components.html#default-prop-values

相关问题