javascript - 在 React Navigation 中重用屏幕

标签 javascript reactjs react-native react-navigation

我是 React Native 新手,尝试使用 react-navigation 在两个屏幕(或页面)之间设置导航。包裹。我现在正在使用 StackNavigator

我面临的问题是似乎无法导航回上一个屏幕。我所能做的就是调用 navigate()。例如,如果我想从 Home 导航到 FRW 然后返回 Home,似乎这会给我留下两个 实例code>Home 位于并行执行的堆栈上(其中一个看不到)。我的代码是这样的:

app.js

import React, { Component } from 'react';
import { AppRegistry } from 'react-native';

import { StackNavigator } from 'react-navigation';

import HomeScreen from './views/HomeScreen.js'
import FRWScreen from './views/FRWScreen.js'

  const MainNavigator = StackNavigator({
    FRW: { screen: FRWScreen },
    Home: { screen: HomeScreen },
  }, {
    headerMode: 'screen',
    headerVisible: false,
    navigationOptions: {
      header: null
    },
    initialRouteName: "Home"
  });

export default class TestApp extends Component {  
  render() {    
    return (
      <MainNavigator></MainNavigator>
    );
  }
}

AppRegistry.registerComponent('TestApp', () => TestApp);

HomeScreen.js

export default class HomeScreen extends Component {
  static navigationOptions = {
    title: 'Welcome'
  };

  (...)

  onSomeButtonPressed() {
    this.props.navigation.navigate('FRW');
  }

  componentDidMount() {
    if (this.locationWatchID !== undefined) return;

    this.locationWatchID = navigator.geolocation.watchPosition((position) => {
      console.log(this.locationWatchID);
    });
  }

  componentWillUnmount() {
    navigator.geolocation.clearWatch(this.locationWatchID);
  }

render() {
  (...)

    return (
      <View style={styles.container}>
        <MapView ref={ref => { this.map = ref; }} />
        <TouchableHighlight
          style={styles.someButton}
          onPress={this.onSomeButtonPressed.bind(this)}
        >
          <Text>Press Me</Text>
        </TouchableHighlight>
      </View>
    )
  }
}

FRWScreen.js 看起来与 HomeScreen.js 类似(并且包含 .navigate("Home"))

此代码的结果是,在导航到 FRW 并返回后,地理位置回调使用不同的 watchID 执行两次。这让我相信主屏幕实际上在导航堆栈上出现了两次。

最佳答案

在您的FRWScreen上,您应该使用this.props.navigation.goBack(null)。请参阅https://reactnavigation.org/docs/navigators/navigation-prop#goBack-Close-the-active-screen-and-move-back .

关于javascript - 在 React Navigation 中重用屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43920441/

相关文章:

javascript - 如果两个数组具有相同的ownerId,如何比较它们

javascript - React Native 文本字符串必须在文本中呈现

javascript - 当 package.json 中包含版本 1.24.2 时,npm install 尝试安装 grpc 1.20.0

javascript - 库存工具的导航箭头

javascript - 替换 document.getElementById ("demoID").style.color = "blue"是否安全?与 demoID.style.color = "blue";

javascript - Vue 包装器组件无法与 axios 正常工作

php - 客户端和服务器端验证

javascript - react : Creating a row per item in an array

react-native - 在链接推荐后 react 原生 fbsdk MODULE_NOT_FOUND

javascript - Jquery 悬停和退出