Dmitry
я не про то. Откуда диспатч? Где его передали?
Dmitry
и вот ошибка. Не пойму Откуда
Danil
Так у тебя ругается на другое же, не на props.dispatch
Dmitry
Dmitry
а на чо ругается? Я не клацал ничего. И в пропсах нету пропс тайп
Мария
dispatch там нужен только чтобы передать в строке 17 и берется, как я понимаю, из глобального стейта
Dmitry
AppNavigator его прокидываем в App
Dmitry
Dmitry
ну вон 2 главных файла кинул. что не так? Все же нормально. редьюсер стандартный
Dmitry
Вот он. А nav просто state возвращает []
Мария
а покажи reducer nav
Dmitry
Мария
у тебя начального стейта нет
Мария
ща
Мария
вот так в примере: const initialState = AppNavigator.router.getStateForAction(AppNavigator.router.getActionForPathAndParams('Login'));
const navReducer = (state = initialState, action) => {
const nextState = AppNavigator.router.getStateForAction(action, state);
// Simply return the original state if nextState is null or undefined.
return nextState || state;
}
Dmitry
а что тут делается?
Мария
при запуске первом у тебя state у nav будет соответствовать экрану Login
Мария
т.е. вместо state = [] у тебя, нужно поставить state = initialState
Dmitry
вот так? Мне импортировать стек? И оттуда экран брать?
Мария
не надо ничего импортировать, просто как initialState бери
nitialState = AppNavigator.router.getStateForAction(AppNavigator.router.getActionForPathAndParams(‘Stack’));
Dmitry
AppNavigator это откуда взять?
Мария
а, ну да, его надо импортировать)
Мария
это твой Router, да
Dmitry
у меня дравер и стек. В дравере стек. Значит импортить дравер?
Мария
я самый верхний навигатор везде для переходов использую
Dmitry
самый верхний это как
Мария
дравер, да
Dmitry
Мария
Router используй свой
Dmitry
ошибки
Dmitry
Dmitry
Danil
Последняя проблема: mapStateToProps вызывается, render вызывается, но SectionList.renderItem не вызывается, так как (если я правильно понимаю) SectionList пропсы не меняются. Как правильно это сделать?
Danil
forceUpdate?
Aleksei
блин, создай https://snack.expo.io/, хватит спамить картинками
Dmitry
не хочу еxpo. Не смог создать
Мария
да, картинками прям гипер сложно понять
Aleksei
Danil
Класс, спасибо
Dmitry
кароче. Трабла не решилась
Dmitry
ну что не так? Как должно быть?
Dmitry
почему стрелка назад появилась? Это же начальный экран
Aleksandr
Dmitry
а как кой толк от интеграции роута с редаксом? Что это дает?
Энлов Свичблейд
Dmitry
Энлов Свичблейд
?
А как у тебя роутинг описан?
Dmitry
всмысле как? Стек вложен в драйвер
Dmitry
Энлов Свичблейд
Энлов Свичблейд
Dmitry
я могу переходить юзая что то типа navigation.dispatch({ type: 'Login' })} ?
Энлов Свичблейд
Dmitry
и это связывание нам это дало? + payload прокидывать? А раньше если без редакса я просто делал бы обычный переход? navigate('Profile', {name: 'Lucy'})?
Энлов Свичблейд
Некоторые роутеры дают тебе синглтон для навигации, некоторые создают изолированный стор для навигации.
Если ты релаишься на редаксе как централизованный источних данных ( https://rajdee.gitbooks.io/redux-in-russian/content/docs/introduction/ThreePrinciples.html ), то ты можешь захотеть пользоваться теми же преимуществами и с роутингом в приложении.
Энлов Свичблейд
Вообще, если ты не знаешь зачем тебе нужен в роутинге редакс, это означает что он тебе просто не нужен. По сути, не всегда и сам редакс нужен.
Aleksei
Dmitry
Энлов Свичблейд
ну юзнать же нужно? Вот когда он нужен?
Ну я отлично справлялся и в React и в React Native приложениях не юзая Redux.
Преимущества это тестируемость, экосистема, коммьюнити, единый источник правды, девтулы, предсказуемый флоу, таймтревел при отладке, логированние событий, сохранение состояния в локальном хранилище на клиенте, синхронизация состояния приложения с сервером, и.т.д.
Энлов Свичблейд
Вместе с этим еще такой же список "боли"
Dmitry
о. Я разобрался 😀😀😀😀
Dmitry
например есть страница и там нужна авторизация. Я могу заделать dispatch и в нем проверить аторизацию. Если ок туда иначе туда. или залогировать. О удобно
Dmitry
правильно я понял?
Энлов Свичблейд
да, отличный пример
Dmitry
я понял откуда диспатч. Это 2й параметр конекта. Он попадет в пропс если функцию в конект передать
Энлов Свичблейд
+ еще с роутингом что ты роутинг держишь на уровне экшнов, а не как я который в компонентах писал роутинг, что не совсем солидно
Dmitry
т.е в общем тот же роутер + если нужно можно перейти диспатчем или просто навигатион.
Dmitry
так я тоже в компоненте
Dmitry
Dmitry
или ты не об этом
Энлов Свичблейд
Я про редуксовые экшны
Энлов Свичблейд
Твои компоненты не завязываются на "конкретную" реализацию роутинга, если роутинг лежит в бизнес логике в редаксе
Dmitry
в итоге это самы важный файл вышел. тут диспатч + начальное состояние экран. Я кажись понял. Я могу перейти на роут юзая navigation() а если нужно что то еще сделать я могу вынести это в редьюсер ?
Dmitry
и заюзать через dispatch() ?