<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>;
когда я использую "Action.reset (" xxx ")", он покажет
То же самое.
Под 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)
Похоже, не узнает ребенка
Я создаю минимальный проект для воспроизведения этой ошибки.
https://github.com/mswokk/RNRF4_test/commit/master
Я обнаружил, что с помощью LightBox + ActionType.RESET => эта комбинация создает проблему.
Хорошо, спасибо, я посмотрю, когда возможно, и обновлю билет.
Также, ребята, я заметил несколько вещей, которые больше не поддерживаются - из- react-navigation@2
критических изменений
swipeEnabled={false}
и animationEnabled={false}
больше не будут работать, так как вы можете прочитать об этом здесь: response-navigation / issues / 4146 и здесьСейчас я проверяю предоставленный код, чтобы узнать, что происходит.
Я обнаружил, что проблема на самом деле не в комбинации между LightBox
и ActionType.RESET
а в том, как RESET
обрабатывается теперь, когда RNRF
больше не управляет состоянием.
Что происходит - RESET
всегда вызывается в верхнем стеке. Я посмотрю здесь, что можно сделать по этому поводу.
Привет, ребята, я смог исправить проблему - просто будучи уверен, что это ничего не сломает, прежде чем создавать PR для этого.
Просто чтобы прояснить, какие исправления я собираюсь ввести:
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"
. По-прежнему сталкиваюсь с той же проблемой
Самый полезный комментарий
@aksonov Привет, у нас все еще