Позиция прокрутки должна быть размещена там, где она была в последний раз в react native.

Самая большая проблема StackNavigator заключается в том, что компоненты не будут размонтированы, т.е. componentWillUnmount() не будет вызван.

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

Но возникает еще одна проблема, которую StackNavigator решит автоматически.

У меня есть компонент, который загружает данные с сервера. В этом компоненте я просто показываю сводку, и всякий раз, когда пользователь нажимает на нее, появляется другой компонент, показывающий детали. Это означает, что есть два компонента (экран). Итак, пользователь переходит на экран подробных сведений (AppNavigator.router.getStateForAction(NavigationActions.navigate({routeName: action.route}), currentState);), а затем он / она нажимает (аппаратную) кнопку возврата, поскольку я отменяю поведение этого события по умолчанию (закройте приложение), он / она перейдет к экрану списка. Теперь проблема в том, что, скажем, он / она был в 15-м данных, теперь, когда он / она переходил с подробного экрана, полоса прокрутки находится в первых данных! Если бы я использовал StackNavigator, полоса прокрутки была бы в 15-м данных.

Я реализовал это с помощью ScrollView и FlatList. Использовал реквизиты onMomentumScrollEnd для получения дополнительных данных с сервера.

Итак, как я могу решить эту проблему, полосу прокрутки следует разместить там, где она была в прошлый раз, и в то же время получить функцию componetWillUnmount?

сохраните эту позицию прокрутки, а затем используйте ListView.scrollTo и получите последнюю сохраненную позицию из вашего кеша

Atif AbbAsi 11.04.2018 14:58

Подскажите, пожалуйста, как узнать текущую позицию прокрутки?

emtiajium 13.04.2018 07:11

рассчитал высоту и использовал this.flatListRef.scrollToOffset({offset: value}) для прокрутки до позиции.

emtiajium 18.04.2018 07:49
stackoverflow.com/questions/29503252/… проверьте этот ответ
Atif AbbAsi 18.04.2018 08:47
1
4
1 132
0

Другие вопросы по теме