React-native-router-flux: Actions.reset: для Key X не определен маршрут

Созданный на 21 авг. 2018  ·  36Комментарии  ·  Источник: aksonov/react-native-router-flux

Версия

  • реагировать-родной-маршрутизатор-поток v4.0.1
  • реагировать-родной v0.56.0






















      <Tabs key="main" tabBarPosition="bottom" swipeEnabled={false} animationEnabled={false} labelStyle={styles.tabLabelStyle} tabBarStyle={styles.tabBarStyle} tabStyle={styles.tabStyle} activeTintColor="#FF4459" leftTitle=" " onLeft={() => {
          console.log("onLeft");
        }}>
        <Scene key="HomeIndexPage" component={HomeIndexPage} tabBarLabel="首页" style={{ paddingBottom: 10 }} title="首页" hideNavBar={true} icon={state => {
            let source = state.focused ? require("../../res/tab/home-icon-active.png") : require("../../res/tab/home-icon-normal.png");
            return <TabIcon source={source} />;
          }} />
        <Scene key="MoreIndexPage" component={MoreIndexPage} tabBarLabel="工作" title="工作" hideNavBar={true} icon={state => {
            let source = state.focused ? require("../../res/tab/work-icon-active.png") : require("../../res/tab/work-icon-normal.png");
            return <TabIcon source={source} />;
          }} onEnter={() => {
            Actions.refs.MoreIndexPage.table();
          }} />
        <Scene key="MineIndexPage" component={MineIndexPage} tabBarLabel="我的" title="我的" hideNavBar={true} icon={state => {
            let source = state.focused ? require("../../res/tab/me-icon-active.png") : require("../../res/tab/me-icon-normal.png");
            return <TabIcon source={source} />;
          }} onEnter={() => {
            Actions.refs.MineIndexPage.refreshHeaderView();
          }} />
      </Tabs>
    </Scene>
    <Scene key="confirmDialog" component={ConfirmDialog} />
  </Lightbox>
</Router>;

РЕДАКТИРОВАТЬ сделал @daviscabral

Действия по воспроизведению

  • Обновление с 4.0.0-beta.31 до 4.0.1
  • Сбросить из вложенной сцены, нацеленной на сцену, которая не находится на первом уровне

Самый полезный комментарий

@aksonov Привет, у нас все еще

Все 36 Комментарий

когда я использую "Action.reset (" xxx ")", он покажет

То же самое.

  • РН 0,54,0
  • RNRF 4.0.1

Под 4.0.0-beta.31 проблем нет.
После обновления до 4.0.1 выдает ошибку.

Вот моя иерархия и сообщение об ошибке

<Router key="root">
            <Lightbox>
                <Scene key="rootScene">
                    <Scene
                        initial
                        key="entryScreen"
                        type={ActionConst.RESET}
                        component={EntryScreen}
                    />
                    <Scene
                        key="appOnboarding"
                        component={AppOnboarding}
                    />
                  (... ommit)
               </Scene>  

                <Scene
                    hideNavBar
                    key="dialog"
                    component={YDialog}
                />

                <Scene
                    hideNavBar
                    key="bottomDrawer"
                    component={BottomDrawer}
                />

                <Scene
                    hideNavBar
                    isModal
                    key="questionnaireResultModal"
                    component={QuestionnaireResult}
                />
          </LightBox>
</Router>

И я вызвал Actions.appOnboarding() из EntryScreen, который является начальной сценой.
Ошибка говорит ....

 Error: Error: There is no route defined for key appOnboarding.
 Must be one of: 'rootScene','dialog','bottomDrawer','questionnaireResultModal'

 This error is located at:
     in Navigator (at createNavigationContainer.js:376)
     in NavigationContainer (at Router.js:97)
     in App (at Router.js:122)

Похоже, не узнает ребенкаs более 2 глубин

Я создаю минимальный проект для воспроизведения этой ошибки.
https://github.com/mswokk/RNRF4_test/commit/master

Я обнаружил, что с помощью LightBox + ActionType.RESET => эта комбинация создает проблему.

Хорошо, спасибо, я посмотрю, когда возможно, и обновлю билет.

Также, ребята, я заметил несколько вещей, которые больше не поддерживаются - из- react-navigation@2 критических изменений

Сейчас я проверяю предоставленный код, чтобы узнать, что происходит.

Я обнаружил, что проблема на самом деле не в комбинации между LightBox и ActionType.RESET а в том, как RESET обрабатывается теперь, когда RNRF больше не управляет состоянием.

Что происходит - RESET всегда вызывается в верхнем стеке. Я посмотрю здесь, что можно сделать по этому поводу.

Привет, ребята, я смог исправить проблему - просто будучи уверен, что это ничего не сломает, прежде чем создавать PR для этого.

Просто чтобы прояснить, какие исправления я собираюсь ввести:

  • Сброс теперь будет работать с правильным стеком / областью видимости - с учетом вложенных сцен;
  • При использовании псевдонимов сцены (Actions. [Key]) для сцены, имеющей тип RESET , она также будет учитывать область видимости.

Спасибо за терпение и за то, что обсуждение здесь было ясным и объективным.

/ cc @ asd8855 @mswokk @andrew @joenoon @januswel

Сегодня я установил последний пакет "response-native-router-flux": "^ 4.0.1", но я не нашел исправления выше.
Может ли кто-нибудь помочь мне, как вытащить эти изменения

@ Kiran0791
Я считаю, что последних изменений нет в npm, прямо сейчас вы можете сделать response-native-router-flux @ https : //github.com/aksonov/react-native-router-flux/

Это должно помочь:

yarn add aksonov/react-native-router-flux

@daviscabral Я установил aksonov/react-native-router-flux но не работает。😂😂

Аксонов / реагировать-родной-маршрутизатор-поток

Даже после этого сброса не работает. В нем говорится, что для регистрации ключа не определен маршрут.Должен быть одним из: "лайтбокс" . При использовании лайтбокса возникает эта ошибка

Вы решили эту проблему в версии 4.0.5? У меня все еще была эта проблема в версии 4.0.5
Ошибка: не определен маршрут для ключевого файла main.
Должен быть одним из: 'root', 'confirmDialog'.

Пожалуйста, попробуйте заменить действие

8 октября 2018 года в 12:09 阿斯顿[email protected] написал:

Вы решили эту проблему в версии 4.0.5? У меня все еще была эта проблема в версии 4.0.5
Ошибка: не определен маршрут для ключевого файла main.
Должен быть одним из: 'root', 'confirmDialog'.

-
Вы получаете это, потому что подписаны на эту беседу.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите обсуждение.

@aksonov Заменить «сброс» на «заменить»?

Да, используйте type = replace для маршрутов, которые вы хотите использовать вместо текущего

В понедельник, 8 октября 2018 г., 阿斯顿[email protected] написал:

@aksonov https://github.com/aksonov Заменить «сброс» на «заменить»?

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/RNRF/react-native-router-flux/issues/3194#issuecomment-427782658 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/ABQpcYT_GXk3n72VK5imxRnVxxT54Paiks5uiyU7gaJpZM4WFDKH
.

@aksonov У меня такая же проблема, когда я обновляю свою версию до 4.0.5, по какой-то причине мне приходится использовать «сброс» вместо «заменить». Что я могу сделать?

Я нашел способ избежать этой проблемы, добавив новую сцену «Маршрут» на первое место «Страницы».

<Lightbox>
            <Scene initial key="Start" component={StartScreen}/>
            <Scene key="Pages">
                <Scene key="Route" component={Route}/>
                <Scene key="Login" component={Login}/>
                <Scene key="Main" component={Main}/>
            </Scene>
</Lightbox>
import {Actions} from 'react-native-router-flux';

const Route = (props) => {
    const {target, params} = props;
    Actions.replace(target, params);
    return null;
};

const {reset} = Actions;

Actions.reset = (target, params) => {
    const props = {target};
    if (params) {
        props.params = params;
    }
    reset('Pages', props);
};

export default Route;

тогда я могу использовать Actions.reset ('Login') или Actions.reset ('Main') как обычно. Я надеюсь это поможет

@hsynlove "Корень" - это пустая страница?

@ asd8855 да, и эта страница может решить эту проблему, хотя и не выглядит элегантно.

Привет, «заменить» - это не то же самое, что «сбросить», потому что нам нужно убедиться, что история больше не отслеживается (с помощью кнопок «Назад» и т. Д.), Когда пользователь выходит из системы.

@aksonov Как вы думаете, это можно решить чисто? Спасибо!

сталкивается с той же проблемой здесь. сброс не работает для вложенных сцен с лайтбоксом.

@aksonov Привет, у нас все еще

@aksonov то же самое и здесь. Просто обновите бета-версию до 4.0.6, и push не работает

то же самое. Сброс не работает и иногда как ни странно нажатие тоже не работает

да, сброс не работает для вложенных сцен с лайтбоксом.

Привет @aksonov , Пытаюсь обновить
react-native-router-flux с 4.0.0-beta.22 до 4.0.6
реагировать-навигация с 1.0.0-beta.26 -> 2.18.3
Реагировать на родной 59.10

По-прежнему сталкиваюсь с этой проблемой. Если я использую REPLACE вместо RESET, у меня не возникает никаких проблем. Но приложение ведет себя не так, как ожидалось.

Не работает react-native-router-flux 4.0.6 для того же сценария (лайтбокс, сброс)

    "react": "16.8.6",
    "react-native": "0.60.4",

Пока это не разрешится, понижен до react-native-router-flux 4.0.X
@aksonov @daviscabral @ asd8855 есть идеи?

@aksonov, не могли бы вы снова открыть вопрос?

То же, что и @malithjkmt, это все еще не работает

"react": "16.9.0", "react-native": "0.61.5", "react-native-router-flux": "4.0.6"

любая работа, не влияющая на поведение приложения (type = "replace")?

та же ошибка, "react-native-router-flux": "^ 4.2.0",

по-прежнему ошибка "реагировать-native-router-flux": "4.2.0". "react-native": "0.60.4"

Action.reset ("ключ") у меня проблема исправлена

У меня такая же проблема с "response-native-router-flux": "^ 4.2.0".
Action.reset ('X') дает мне: для Key X не определен маршрут

Я тоже сталкиваюсь с той же проблемой. Когда я добавляю type = 'reset' в сцену, он работает нормально при подключении к метро. Но при создании сборки отображается ошибка, предупреждающая о том, что для ключа x не определен маршрут.

Через 2 года обновился до "react-native-router-flux": "^4.3.1" . По-прежнему сталкиваюсь с той же проблемой

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

jgibbons picture jgibbons  ·  3Комментарии

YouYII picture YouYII  ·  3Комментарии

willmcclellan picture willmcclellan  ·  3Комментарии

xnog picture xnog  ·  3Комментарии

sarovin picture sarovin  ·  3Комментарии