уменьшает количество залипающих или временно запоминаемых селекторов

#reactjs #global-variables #redux #react-redux

#reactjs #глобальные переменные #уменьшает #реагирует-уменьшает

Вопрос:

У меня есть простая потребность в моем приложении React-Redux, с которой я хотел бы найти «способ сокращения» для решения:

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

Однако мне нужно вычислить некоторые производные данные на основе первого полученного состояния внутри моей mapStateToProps функции и использовать их до конца выполнения приложения. Это было бы легко, если бы производные данные нужно было обновлять на основе каждого изменения состояния, однако хитрость в том, что мне нужно будет вычислить их только один раз и запоминать на протяжении всего выполнения приложения.

Производные данные не являются логической частью состояния приложения, поэтому я бы не хотел утруждать себя тем, чтобы сделать их частью хранилища. Я мог бы использовать простую глобальную переменную, чтобы сохранить эти данные и избежать их повторного вычисления на более позднем этапе, но я почти уверен, что это не «способ redux»! использование селекторов также, похоже, не является решением, поскольку оно пересчитывает производные данные при каждом изменении состояния. Я также изучил контекст React, но поскольку я не хочу сразу отправлять свои данные компонентам, похоже, это тоже не то, что мне нужно.

Есть предложения?

Ответ №1:

Вы должны сохранить это в Redux. Возможно, он изменяется только один раз, но это все еще состояние приложения.

Обратите внимание, что все, что может быть получено из текущего состояния приложения, должно вычисляться «на лету» с использованием селектора.

Используя Reselect, вам не нужно беспокоиться о проблемах с производительностью (если только получение не занимает очень много времени и вам не понадобятся веб-разработчики).

Комментарии:

1. Спасибо за ввод @DDS В настоящее время я переписываю свое приложение, чтобы включить это в состояние, однако производные данные в основном предназначены для целей представления и не являются концептуальной частью приложения. В целом, я согласен с тем, что в настоящее время мне кажется, что втиснуть его в мое хранилище redux представляется наиболее простым решением, не противоречащим шаблону, просто интересно, что могут подумать другие