Как определить состояние при использовании `history.goBack ()` - PullRequest
0 голосов
/ 26 сентября 2018

Я создал несколько анимаций, которые я хотел бы использовать для навигации по маршрутам в моем приложении.У меня есть кнопка «Назад» на некоторых страницах, которая позволяет пользователям выскакивать из стека навигации для доступа к самой последней странице.Мне бы хотелось две разные анимации, одну для более глубокого перемещения в стеке и одну для возврата к самой последней странице.Я хотел бы использовать history.goBack(), но, похоже, нет способа передать состояние и, следовательно, использовать другую анимацию.

Я использовал эту статью , чтобы выяснить, как получитьдинамические анимации для моих компонентов, но если я не использую history.push({pathname, state:{animation, duration}}), я не вижу, как я могу указать другую анимацию для использования, когда пользователь возвращается.

1 Ответ

0 голосов
/ 26 сентября 2018

Одним из решений может быть добавление метода listen к пользовательскому объекту history для вашего приложения.Следуйте инструкциям здесь в первую очередь, чтобы настроить его.

Теперь history.goBack() использует действие POP в стеке истории, поэтому вы можете проверить, например:

// in your history.js

history.listen((location, action) => {
  if (action === 'POP') {
    history.replace(location.pathname, {specialAnimation: 'whatever value'});
  }
}

Таким образом, вы перезаписываете свое состояние, если у вас есть другие вещи в вашем состоянии, которые вы хотите, вы можете сделать что-то вроде

location.state.specialAnimation = 'whatever';
...