#reactjs #redux
#reactjs #redux
Вопрос:
Я создаю веб-приложение react / redux и задаюсь вопросом, где мне следует хранить информацию о статической конфигурации, которая никогда не меняется (пока веб-приложение все равно запущено).
Это данные, о которых идет речь
Эта информация используется в разных частях приложения, например: существует форма, в которой вы можете выбрать любой элемент из основного массива и, поступая таким образом, заполнить другое поле выбора свойствами выбранного массива:
<select>Choose an exchange</select>
<select>Choose a market (that is available in the above exchange)</select>
Это было бы неплохо для некоторой логики редуктора (которая устанавливается state.markets
на основе того, что выбрано в первом select
), но должна ли она фильтровать на основе другого состояния в дереве или просто загружать данные в замыкании внутри редуктора (сохраняя все несвязанное за пределами дерева состояний)? Или это вообще не состояние (и должен ли контейнер загружать этот файл и фильтровать на основе одного state.exchange
параметра состояния)?
Когда форма заполнена, результат будет обработан следующим образом:
{exchange: 'a', market: 'b'}
Так что это тоже было бы состоянием (я полагаю?)
Комментарии:
1. Если эти опубликованные вами данные никогда не изменятся, я бы просто оставил их в виде модуля такими, какие они есть у вас. затем вы можете импортировать ее везде, где вам нужно прочитать любое из этих полей.
Ответ №1:
Насколько я понимаю redux
, мы должны хранить только данные с сохранением состояния в store
, то есть данные, которые могут быть изменены. Статические данные по определению не имеют состояния, и поэтому их не нужно отслеживать как таковые.
В результате у меня обычно есть /common/app-const.js
файл, в котором я храню эти типы статических объектов. В вашем случае вы можете просто переместить все статические данные из exchange.js
в общий файл, который вы затем import
используете везде, где вам это нужно.
/common/app-const.js
export default {
markets: [
{ pair: ['USD', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
{ pair: ['RUR', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
{ pair: ['EUR', 'BTC'], minimalOrder: { amount: 0.01, unit: 'asset' } },
...
}
Однако я понимаю ваш подход, было бы неплохо просто ввести ваши данные с помощью connect()
via react-redux
, однако немного проще просто import
извлекать статические данные из файла, где это необходимо.
Комментарии:
1. Слово в вашем последнем абзаце, хотя оно и более «простое», оператор import в файл статических данных создает очень жесткую зависимость от этого файла. Redux предоставляет форму внедрения зависимостей в этом отношении.