Перейдите на дополнительный экран отовсюду - PullRequest
0 голосов
/ 01 июня 2019

Я столкнулся с проблемой. Я хочу найти единственный способ перейти к конкретному подэкрану отовсюду (из каждого стека). Мне это нужно для обработки навигации при выборе уведомлений. Таким образом, док говорит, что если я хочу перейти на дополнительный экран, я должен действовать следующим образом:

const navigateAction = NavigationActions.navigate({
     routeName: 'Profile',
     params: {},
     action: NavigationActions.navigate({ routeName: 'SubProfileRoute' 
   }),
});

this.props.navigation.dispatch(navigateAction)  // (1)

Это работает для меня, только если я вне стека "Профиль". Но если я в стеке профилей, навигация застревает на начальном экране в стеке профилей.

Итак, у меня есть 2 вопроса: - можем ли мы использовать метод (1) для перемещения по одному и тому же стеку? - Есть ли способ узнать, в каком стеке находится пользователь в данный момент?
this.props.navigation.state не помогает (потому что я хочу, чтобы информация в слушателе находилась на определенном экране)

Большое спасибо

1 Ответ

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

Вместо того, чтобы отвечать на ваши вопросы, я собираюсь предложить вам простую альтернативу. Это использовать response-native-router-flux. Он очень прост в использовании и отвечает на ваши вопросы выше с очень простыми кодами. После установки модуля добавьте в файл App.js следующее:

import { Router, Scene, Actions } from 'react-native-router-flux';
import Home from 'homeLocation';
import AnotherPage from 'anotherPageLocation';

const onBackPress = () => {
    if (Actions.state.index === 0) {
      return false
    }
    Actions.pop()
    return true
};
const Routes = () => (
   <Router navigationBarStyle={{// your style}} backAndroidHandler={onBackPress}
      titleStyle = {{// your style}} navBarButtonColor = {"lightgrey"}>
      <Scene key = "root">
         <Scene key = "Home" component = {Home} title = "homePageTitle" initial = {true}/>
         <Scene key = "AnotherPage" component = {AnotherPage} title = "pageTitle" />
        // ...other scenes
      </Scene>
   </Router>
)
export default Routes;

Затем, если вы хотите перейти на домашнюю страницу с любой страницы, просто напишите Actions.Home() или, если вы хотите перейти на 'AnotherPage', просто напишите Actions.AnotherPage(). Если вы хотите попасть на страницу, на которой вы сейчас находитесь, получите ее с const currentpage = Actions.currentScene();. Возвращает имя текущей сцены. Для получения дополнительной информации, смотрите эту страницу .

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