0

在开发过程中,我发现 intialState 中的字段在我声明它们时会从 redux devtools 中删除undefined。但是,当我将它们声明为 时null,它们会再次出现在 devtool 中。为什么会这样?

我的初始状态 ( pending: undefined)

const initialState = {
    data: null,
    pending: undefined,
    error: null
};

pending从 redux devtool 中消失:

redux-devtool-未定义

相同的初始状态 ( pending: null)

const initialState = {
    data: null,
    pending: null,
    error: null
};

pending出现在 redux devtool 中:

redux-devtool-null

2个问题:

  1. 我应该坚持什么模式?(即声明字段为nullundefined)?
  2. 在选择商店的部分方面是否有任何性能提升?
4

1 回答 1

0

null并且undefined是两个不同的值是有原因的。访问任何 js 值(除了这两个 ofc)上的未分配字段将返回undefined. 所以如果你这样做:

var foo = {};
foo.bar = undefined;

您将得到一个对象,其行为似乎bar字段未分配:除了它是并且您拥有foo.hasOwnProperty("bar") === true. 但这令人困惑。这就是为什么使用表示不存在值 null和表示未分配undefined的原因。有趣的是,在解构数据结构时可以发现这种行为差异:

var { foo = "bar" } = { foo: undefined }

var { foo = "bar" } = { foo: null }

将导致foo === "bar"前者和foo === null后者。

于 2019-04-04T18:14:11.567 回答