Реагируйте на замораживание потоков в собственном маршрутизаторе без {type: reset} - PullRequest
1 голос
/ 24 июня 2019

Я использую React Native Router Flux в своем мобильном приложении для маршрутизации.

Структура страницы похожа на

Login.js Получить пароль пользователя и подтверждение имени пользователя и сохранить токен пользователя в AsyncStorage. Если в приложении есть токен пользователя, перенаправить пользователя на MainPage.js

(перенаправление в методе ComponentWillMount())

MainPage.js Выполните вызов API для моего внутреннего сервера для получения списка некоторых данных

DetailPage.js Выполните вызов API для моего внутреннего сервера для получения некоторых подробных данных.

-

Структура моего маршрутизатора;

<Roter>
    <Scene key="root">
        <Scene initial component={Login} key="login" />
        <Scene component={MainPage} key="mainpage" />
        <Scene component={DetailPage} key="detailpage" />
    </Scene>
</Router>

-

Проблема в том, что

Когда я хочу перейти с MainPage до DetailPage , я не могу использовать Actions.detailpage() без Actions.detailpage({type:"reset"})

Если я пытаюсь использовать только Actions.detailpage(), приложение зависает на главной странице.Но я console.log («это страница с подробной информацией»), я вижу вывод.На самом деле я могу перемещаться с Actions.detailpage(), но мой DetailPage не может загрузить на экран.

У меня есть сетевые вызовы.Разве навигационный стек не обрабатывает этот тяжелый процесс?

Если я использую Actions.detailpage({type:"reset"}), история навигации отсутствует.Поэтому я не могу использовать кнопки «Назад» на верхней панели навигации.

Что мне здесь не хватает?

Свойство сброса действий: очищает стек маршрутизации и помещает сцену в первый индекс.Переход не произойдет.

https://github.com/aksonov/react-native-router-flux/blob/master/docs/API.md#actions


Редактировать:

Когда я удаляю все свои настройки маршрутизации и добавляю две пустые сцены, например PageA.jsи PageB.js, все еще замерзает, когда я пытаюсь перейти от PageA к PageB

<Roter>
        <Scene key="root>
            <Scene initial component={PageA} key="page_a" />
            <Scene component={PageB} key="page_b" />
        </Scene>
    </Router>

Тем не менее я получаю ту же ошибку.Что-то в моем приложении блокирует рендеринг страниц и загрузку сцен.Как я проверяю эту проблему?

Также мои зависимости:

"dependencies": {
    "@react-native-community/async-storage": "^1.4.2",
    "react": "16.8.3",
    "react-native": "0.59.8",
    "react-native-elements": "^1.1.0",
    "react-native-facebook-account-kit": "^1.1.0",
    "react-native-fbsdk": "^0.8.0",
    "react-native-iap": "^2.5.5",
    "react-native-router-flux": "^4.0.6",
    "react-native-vector-icons": "^6.5.0"
  },

1 Ответ

0 голосов
/ 25 июня 2019

вы использовали Actions.push ('ключ к сцене') ? У меня проблемы с переходом на конкретную сцену напрямую, но эта может помочь вам. я думаю об использовании реакции навигации

...