Глобальный модуль es6 для хранения констант в приложении реакции - предотвращает сборку мусора - PullRequest
0 голосов
/ 12 февраля 2020

Я хотел бы хранить некоторые переменные внутри модуля (экспорт), которые будут использоваться в качестве констант, хотя в моем приложении реакции. Я хотел бы избежать контекста, потому что нет необходимости в повторном рендеринге компонентов, а также мне нужно, чтобы эти константы использовались вне моих реагирующих компонентов.

Где я должен это сделать (где импортировать), в Чтобы предотвратить сборку мусора?

У меня есть идея импортировать и реэкспортировать его поверх моего root компонента.

РЕДАКТИРОВАТЬ:

Чтобы быть более точнее, будет компонент, который один раз установит константу (мутирует переменную), чтобы другие компоненты или файлы могли получить к ней доступ.

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

После более подробного изучения я обнаружил, что модуль es6 spe c сообщает:

При импорте модуля он получает loaded => parsed => evaluated и cached (singleton ). Это также говорит о том, что при импорте модулей его значение передается по ссылке (так называемое присваивание). Я не нашел никаких упоминаний о том, когда или как модули es6 выгружаются из этого кэша.

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

ссылка

1 голос
/ 12 февраля 2020

Итак, вам понадобится какой-то шаблон сеттера / геттера. Хотя я в основном не рекомендую его, если вы не знаете, что делаете, потому что React не будет перерисовывать, если переменная изменится , и поэтому вам нужно , чтобы убедиться, что переменная установлена перед его использованием .

У вас должно быть что-то вроде примера ниже, чтобы оно работало так, как вы хотите. Вы можете найти пример того, как он работает с этим Codesandbox .

export let MY_VARIABLE = "";

export const setMyVariable = value => (MY_VARIABLE = value);

PS: я добавил немного console.log к коду, чтобы вы увидели, как импорт / get / set ведет себя.

0 голосов
/ 12 февраля 2020

Вы можете создать конфигурацию. js внутри папки sr c и записать свою постоянную переменную как

// config. js module.exports = {CONST_VAR: 'const value', }

импортировать конфигурацию. js в свой компонент и использовать его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...