React Native / React Navigation Performance: лучшая практика для хранения/передачи данных для списков?

Предисловие: я бы хотел пока отложить реализацию магазина Redux, так как он кажется довольно глубоким, и я не уверен, что он мне нужен (кроме того, объем/бюджет проекта - это то, что есть).

Я использую реагирующую навигацию (навигатор стека) и пытаюсь выяснить, как лучше всего предварительно загружать/сохранять данные для представлений списка (~ 40 элементов в моем случае)? У меня есть главный домашний экран, а второй экран, на который переходит пользователь, представляет собой представление списка (FlatList). Данные для FlatList поступают из объекта JSON в локальном файле. Если я импортирую данные в компонент экрана следующим образом:

import someData from '../data/someData'

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

Я полагаю, что мне следует загружать данные заранее, в идеале, когда приложение загружается впервые, а затем получать к ним доступ из какой-либо глобальной переменной - ИЛИ передавать их в качестве опоры в навигаторе? Тогда я мог бы получить к нему доступ с помощью this.props.data в компоненте экрана?

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

Любое понимание этого будет с благодарностью!


person Greg Blass    schedule 15.05.2017    source источник
comment
Я думаю, вы бы избавились от многих потенциальных хлопот и возни, если бы просто продолжили работу с Redux. Я только что сделал что-то очень похожее и обнаружил, что имплантация избыточности не так утомительна, как я сначала думал. В качестве альтернативы да, вы можете передавать свои данные через реквизиты.   -  person sooper    schedule 16.05.2017
comment
Понял @sooper, спасибо за совет. Мне нужно посмотреть, как передавать данные с реквизитами с помощью React Navigation...   -  person Greg Blass    schedule 16.05.2017
comment
Нп. Редукция с точки зрения производительности сохранит ваши данные в своем хранилище, и вам не придется каждый раз импортировать их.   -  person sooper    schedule 16.05.2017


Ответы (1)


Я спускался совершенно не в ту кроличью нору. Нет ничего плохого в том, чтобы импортировать ваши данные для каждого экрана. Я запускал Экспо в режиме разработки!

person Greg Blass    schedule 16.05.2017