Сбросить стек, вложенный в мой навигатор по ящикам - PullRequest
0 голосов
/ 18 июня 2020

Цель

В настоящее время у меня есть ящик с моими различными маршрутами

Main - Drawer Stack nav
   A - Stack nav
   B - Stack nav

Я хочу заменить маршруты в A - Stack nav, когда пользователь щелкает кнопка, вложенная в компонент выдвижного ящика.

Кто-нибудь знает, как этого добиться? Я пробовал использовать CommonActions, но похоже, что они влияют только на стек ящика, а не на мой вложенный стек

1 Ответ

0 голосов
/ 18 июня 2020

Мне удалось решить мою проблему, используя приведенный ниже код

navigation.dispatch((state:any) => {
  const index = 2;
  const routes = state.routes.filter((r:any) => r.name !== 'people');
  routes.splice(index, 0, {name:'people'});
  return CommonActions.reset({
    ...state,
    routes,
  });
});
navigation.navigate('people')

Итак, из компонента выдвижного ящика пользователь нажимает кнопку, которая выполняет следующие действия:

  1. получить состояние
  2. удаляет маршрут с именем people
  3. сращивания в новом объекте {name:"people"}
  4. выполняет CommonActions.reset

Маршрут с именем people теперь обновляется и начинается с начала.

- Примечание --- Измените index на индекс вашего маршрута.

Это может быть не совсем простой способ сделать это и Мне было бы интересно узнать о лучшем решении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...