Подтвердить что ты не робот

React-Navigation переходит на тот же маршрут с разными параметрами

Я использую экран React-Navigation с именем "Пользователь", чтобы показать информацию о конкретном пользователе. При навигации по этому маршруту я передаю параметр "id", который сообщает экрану, с каким пользователем он имеет дело. При просмотре пользователя можно щелкнуть что-то, что позволит вам просматривать другого пользователя.

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

Поэтому я хотел бы знать, как я могу заставить его перейти к другой версии того же маршрута.

Если это имеет какое-либо значение, я работаю с Redux и перемещаюсь путем отправки генерируемых действий, таких как:

NavigationActions.navigate({ routeName: 'User', params: {userId} })
4b9b3361

Ответ 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

Ссылка