Redux -> Пересмотреть справку, если входной селектор является объектом, пересчитать? - PullRequest
0 голосов
/ 03 апреля 2020

может действительно помочь с этим умственным блоком, который я имею при использовании Реселекта.

Сводка моего вопроса будет такой: если я пытаюсь создать запомненный селектор, а один из моих входных селекторов является вложенным объектом, будет ли эта причина повторно выбирать каждый раз повторно?

Допустим, мое состояние

{name: bob, portfolio: {'tesla': {price: 10}, 'ibm': {price: 20}}}

У меня есть селектор ввода ниже, и, как вы можете видеть, это объект с большим количеством объектов.

const portfolioSelector = (state) => state.portfolio

И еще один селектор реквизитов, в котором я просто передаю название компании в качестве ключа.

const idSelector = (_, companyName) => companyName

Мой запомненный селектор будет выглядеть примерно так:

 const makeGetPrice = () => {
   return createSelector(
     [portfolioSelector, idSelector], 
     (portfolio, id) => { return portfolio[id].price}
}

Теперь, так как в соответствии с redux do c они сравнивают, используя ===, не будет ли объект портфеля интерпретироваться как новый объект каждый раз?

Где-то я читал, что они перебирают ключи, поэтому он просто проверяет первый уровень, но тогда в моем случае {цена: 5} будет вторым уровнем, и сравнение вернет false.

Я изо всех сил пытаюсь понять, как повторный выбор предотвращает повторное вычисление, используя входные селекторы, которые я предоставил.

...