реакция-навигация: имеет то же состояние, что и предыдущий маршрут, но действует как толчок? - PullRequest
0 голосов
/ 20 ноября 2018

Скажите, у меня есть Экран 1 и Экран 2 .Я нажимаю от Экран 1 до Экран 2 .Так что Экран 1 все еще там, и его состояние не изменяется.Но я хочу иметь возможность перейти к третьему экрану, Экран 3 , который ТОЧНО соответствует состоянию Экран 1 (копия), но действует как push .

Переход от Экран 1 к Экран 2 дает мне переход карты, но я в основном хочу нажать с Экран 2 до Экран 3 (еще один переход с карты), но Экран 3 должен иметь то же состояние, что и Экран 1 , как и при прокрутке, данныеи т. д.

РЕДАКТИРОВАТЬ: К сожалению, я не могу загрузить любые GIF-файлы для разъяснения, потому что многие из них слишком велики.Примером может служить приложение Reddit: переход от табличного представления к просмотру поста (где вид вкладки исчезает), но затем, когда вы щелкаете по имени субредита, он переносит вас (с анимацией push) в другой вид вкладки,но это тот же.

РЕДАКТИРОВАТЬ 2: Вот ссылка на экран записи того, что я хочу.

  1. Такпервый экран показывает, как я прокручиваю вниз до определенной области.(табличное представление) - Screen 1
  2. Затем есть навигация по карте на «Просмотр экрана сообщения», где вы можете видеть комментарии и т. д. (без вкладок) - Screen 2

  3. Затем я нажал на r / aww, который перемещается с переходом карты на страницу subreddit.(табличное представление) - Screen 3

  4. Вкладка для Screen 3 прокручивается в то же место, в котором я прокручивался в Screen 1.Это то, что я имел в виду под «тем же состоянием».

Нажатие на другой маршрут с тем же именем не работает, потому что все настроено по умолчанию и будет плохо для пользователя.Возврат не сработает, потому что он покажет переход карты назад с Screen 2 на Screen 3 - переход с толчка карты более естественный.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Мое понимание вашего сценария варианта использования заключается в том, что вы хотите сохранить стилизацию и структуру компонента на разных экранах.У меня здесь два выноса:

  • Если два экрана (Screen1 и Screen3) точно одинаковы, то зачем вам дубликат впервое место?Почему бы не показать Screen1 снова, чтобы размер вашего стека был небольшим?В вашем примере: пользователь на Screen1, который является домашней страницей subreddit.Затем они нажимают на ссылку для публикации, которая приводит их к Screen2.Опять же, когда пользователь нажимает на ссылку на домашнюю страницу subreddit, он не открывает новый экран , он просто возвращается к исходному Screen1.

  • Если между двумя экранами есть небольшие различия, вы можете просто использовать повторное использование компонента.Например, если есть два подредакта r/android и r/reactnative, у вас будет по одному компоненту для них обоих: <SubRedditComponent>, но их данные и стиль будут другими.

0 голосов
/ 20 ноября 2018

В react-navigation вы можете перейти к неограниченному - теоретически - одному экрану.Если вы хотите изменить содержимое экрана, вы можете использовать параметры навигации.Вы можете думать, например, в приложении Instagram.

Пользователь (я) -> Подписчики -> Пользователь (Алиса) -> Подписчики -> Пользователь (Боб) -> Подписчики -> Пользователь (Джон)

const Navigator = createStackNavigator({
  Followers: { screen: Followers },
  User: { screen: Profile },
});

/...
this.props.navigation.navigate('User', { user: 'me' });
this.props.navigation.navigate('Followers', { user: 'me' });
this.props.navigation.navigate('User', { user: 'Alice' });
this.props.navigation.navigate('Followers', { user: 'Alice' });
this.props.navigation.navigate('User', { user: 'Bob' });
this.props.navigation.navigate('Followers', { user: 'Bob' });
this.props.navigation.navigate('User', { user: 'John' });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...