Size: a a a

React Native — русскоговорящее сообщество

2020 January 30

SS

Serhey Shmyg in React Native — русскоговорящее сообщество
источник

SS

Serhey Shmyg in React Native — русскоговорящее сообщество
источник

SS

Serhey Shmyg in React Native — русскоговорящее сообщество
И хок тоже есть :)
Так что выбирай что ближе и юзай
источник

OK

Oleg Klimakov in React Native — русскоговорящее сообщество
withNavigation выглядит интересно. Сейчас попробую. Спасибо
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Ребятки. Добрый день. Нужен совет.


Как правильно поступить. Есть глобал стейт (useContext). Там лежит свойство loading (bool). Там же функция showLoader и hideLoader, которые меняют значение loading. Там же есть функция - фетчинг данных с сервера. На старте фетчинга запускаю showLoader, по окончании hideLoader. Есть объект, который получаю с помощью той самой функции фетчинга. Теперь к вью - есть скрин, в котором все данные исключительно из полученных с сервера. Изначального значения в них нет. Соответственно что получается. По умолчанию loading = false. Перехожу на этот скрин, сразу отрабатывает return, и кричит что обьект ундефайндет. И это логично, ведь сначала return, а потом уже useEffect, в котором я запускаю функцию из глобалстейста. Пробую валидировать вью по ключу loading - сделав его по умолчанию true. Работает, все отлично. Но далее ухожу на другой аналогичный скрин. И там уже loading false, так как в конце процедуры прошлого скрина он логично поменялся на false и у меня отрисовался return компонента.

Вопрос: я вижу единственный выход - вешать loading в локальный setState. Но теряется централизованность тогда) правильно ли я мыслю?
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Точнее useState
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
P. S. Когда loading true, возвращается прогрессИндикатор
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
На всех скринах
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Но проблема, что из за глобального loading, он всегда false, кроме начального состояния
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Т.е. На каждом этапе он в конечном итоге станет false
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Еще подумал запускать showLoader не в useEffect а сразу после объявления контекста в компоненте
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Но это мне кажется как то по дилетански)
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Короче я в ступоре
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Либо делать для каждого скрина, где работа с асинхронщиной - свой локал контекст?
источник

РМ

Руслан Мамедов in React Native — русскоговорящее сообщество
Помоему, данные типо isLoading нужно хранить в стейте компонента
источник

РМ

Руслан Мамедов in React Native — русскоговорящее сообщество
Я использую твой вариант с setState
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Тогда и try catch finale нужно обрабатывать в компоненте, а не на стороне контекста
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Т.к. нужно при получении ошибки, тоже сменить значение isLoading
источник

ИС

Игорь Стрелов in React Native — русскоговорящее сообщество
Ну в целом другого варианта похоже нет
источник

РМ

Руслан Мамедов in React Native — русскоговорящее сообщество
ну ты же будешь что-то пользователю писать когда в catch уйдешь
источник