4

Как сохранить центральный/глобальный объект для некоторых данных с помощью ретранслятора?Глобальные данные с реактивным маршрутизатором

Предположим, у моего сайта React имеется 20 различных маршрутов. 15 из этих 20 маршрутов нуждаются в одном файле JSON с сервера, который почти никогда не изменяется. Мне не терпится получить ПО/api/mydata для каждого нового URL/маршрута.

Я думаю, что могу сохранить данные в React's context, но это кажется взломанным и может даже не работать. Существует ли более элегантное решение для обмена данными между компонентами реагирующего маршрутизатора?

Edit: я частично решена путем создания Data.js файла:

export var myData = function(cb) { 
    ajax('GET', '/api/mydata', resp => { 
    myData = function() { 
     return cb(resp); 
    }; 
    cb(resp); 
    }); 
}; 

и использовать его как это:

myData(data => data.map(/* ...use the data */)); 

Таким образом, данные гарантированно только неправдоподобным один раз в жизненный цикл.

+1

Вы можете просто сохранить эти данные в качестве реквизита в корневом компоненте и передать его дочернему компоненту. Маршрутизация в реакторе не будет сбрасывать реквизиты. Я предлагаю вам изучить реакцию-редукцию или поток, они решили вашу проблему. –

+0

Я столкнулся с редукцией и флюсом и смутно понял, что это проблема, которую они решают, но я был слишком обеспокоен добавлением _more_ KB к моей программе. – zelcon5

+0

Redux is ~ 2kb. Я не думаю, что вы должны беспокоиться об этом. – charlespwd

ответ

3

Arrr ... если вы не хотите использовать Redux или поток, вы можете создать синглтон, как это в новом JS файл

let appState = {}; 
export default appState; 

Во-первых сделать Аякс заполнить данные в этом одноточечном. Затем импортируйте его везде, где хотите данные.

+0

Пробовал слишком долго, чтобы заставить это работать ... Я буду использовать сокращение в будущем. Для этого проекта я просто буду играть с заголовками управления кешем, чтобы упростить работу. – zelcon5

 Смежные вопросы

  • Нет связанных вопросов^_^