React-Navigation переходит на тот же маршрут с разными параметрами
Я использую экран React-Navigation с именем "Пользователь", чтобы показать информацию о конкретном пользователе. При навигации по этому маршруту я передаю параметр "id", который сообщает экрану, с каким пользователем он имеет дело. При просмотре пользователя можно щелкнуть что-то, что позволит вам просматривать другого пользователя.
На данный момент это работает, и новый параметр отображает другие детали пользователя. Проблема в том, что он не переходит на новый экран для другого пользователя и вместо этого просто меняет текущий экран. Проблема в том, что когда вы перемещаетесь назад, вы не добираетесь до экрана для начального пользователя, но все, что было до него. Вы также не получаете визуальной подсказки, которую вы проводили.
Поэтому я хотел бы знать, как я могу заставить его перейти к другой версии того же маршрута.
Если это имеет какое-либо значение, я работаю с Redux и перемещаюсь путем отправки генерируемых действий, таких как:
NavigationActions.navigate({ routeName: 'User', params: {userId} })
Ответы
Ответ 1
Вы ищете толчок вместо навигации. Когда вы используете навигацию, он ищет маршрут с этим именем, и, если он существует, перейдите к нему. Когда вы используете push, вы идете по новому маршруту, добавляя новую навигацию в стек.
Смотрите документацию здесь https://reactnavigation.org/docs/en/navigating.html#navigate-to-a-route-multiple-times
В вашем случае вы должны сделать:
NavigationActions.push({ routeName: 'User', params: {userId} })
или через ваш реквизит (убедитесь, что ваш реквизит имеет "навигацию"):
this.props.navigation.push('User', {userId:'paramValue'})
Ответ 2
Используйте навигационную клавишу для навигации по тому же маршруту
const navigateAction = NavigationActions.navigate({
routeName: 'User',
params: {userId},
key: 'APage' + APageUUID
});
this.props.navigation.dispatch(navigateAction);
ИЛИ
this.props.navigation.navigate({
routeName: 'User',
params: {userId},
key: 'APage' + APageUUID
});
APageUUID
- это просто уникальный идентификатор страницы, который можно создать с помощью Math.random () * 10000
Ссылка