#reactjs #global-variables #redux #react-redux
#reactjs #глобальные переменные #уменьшает #реагирует-уменьшает
Вопрос:
У меня есть простая потребность в моем приложении React-Redux, с которой я хотел бы найти «способ сокращения» для решения:
При первом запуске приложения генерируются некоторые случайные данные, которые передаются как initialState
и на протяжении всего выполнения приложения я играю с этими данными, используя диспетчеры действий redux и изменения состояния.
Однако мне нужно вычислить некоторые производные данные на основе первого полученного состояния внутри моей mapStateToProps
функции и использовать их до конца выполнения приложения. Это было бы легко, если бы производные данные нужно было обновлять на основе каждого изменения состояния, однако хитрость в том, что мне нужно будет вычислить их только один раз и запоминать на протяжении всего выполнения приложения.
Производные данные не являются логической частью состояния приложения, поэтому я бы не хотел утруждать себя тем, чтобы сделать их частью хранилища. Я мог бы использовать простую глобальную переменную, чтобы сохранить эти данные и избежать их повторного вычисления на более позднем этапе, но я почти уверен, что это не «способ redux»! использование селекторов также, похоже, не является решением, поскольку оно пересчитывает производные данные при каждом изменении состояния. Я также изучил контекст React, но поскольку я не хочу сразу отправлять свои данные компонентам, похоже, это тоже не то, что мне нужно.
Есть предложения?
Ответ №1:
Вы должны сохранить это в Redux. Возможно, он изменяется только один раз, но это все еще состояние приложения.
Обратите внимание, что все, что может быть получено из текущего состояния приложения, должно вычисляться «на лету» с использованием селектора.
Используя Reselect, вам не нужно беспокоиться о проблемах с производительностью (если только получение не занимает очень много времени и вам не понадобятся веб-разработчики).
Комментарии:
1. Спасибо за ввод @DDS В настоящее время я переписываю свое приложение, чтобы включить это в состояние, однако производные данные в основном предназначены для целей представления и не являются концептуальной частью приложения. В целом, я согласен с тем, что в настоящее время мне кажется, что втиснуть его в мое хранилище redux представляется наиболее простым решением, не противоречащим шаблону, просто интересно, что могут подумать другие