Почему initialState не показывает неопределенные поля, но сохраняет пустые поля в избыточном? - PullRequest
0 голосов
/ 04 апреля 2019

Во время разработки я обнаружил, что поля в intialState исключаются из избыточного devtools, как я их объявляю undefined. Однако, когда я объявляю их как null, они снова появляются в devtool. Почему это происходит?

Мое начальное состояние (pending: undefined)

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

pending исчезает из редукса devtool:

redux-devtool-undefined

То же начальное состояние (pending: null)

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

pending появляется снова в redux devtool:

redux-devtool-null

2 вопроса:

  1. Какой шаблон мне следует придерживаться? (т.е. объявлять поля как null или undefined)?
  2. Есть ли какой-то прирост производительности с точки зрения выбора частей магазина?

1 Ответ

0 голосов
/ 04 апреля 2019

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 во втором.

...