Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改导航栏以响应导航状态_Javascript_React Native - Fatal编程技术网

Javascript 更改导航栏以响应导航状态

Javascript 更改导航栏以响应导航状态,javascript,react-native,Javascript,React Native,我正在编写一个应用程序,只希望在将新视图推到导航器上时显示“后退”按钮(在本例中,是新闻文章还是新闻文章列表) 这样做的方法似乎是修改render(),使其仅包含特定导航器状态的“后退”按钮。虽然React原生文档建议导航器中的组件可以使用getContext访问它,但这似乎不适用于navigatorBar 这样做对吗?如何仅在某些导航状态下渲染“后退”按钮 <Navigator initialRoute={{name: 'NewsList', index: 0}} ren

我正在编写一个应用程序,只希望在将新视图推到导航器上时显示“后退”按钮(在本例中,是新闻文章还是新闻文章列表)

这样做的方法似乎是修改render(),使其仅包含特定导航器状态的“后退”按钮。虽然React原生文档建议导航器中的组件可以使用getContext访问它,但这似乎不适用于navigatorBar

这样做对吗?如何仅在某些导航状态下渲染“后退”按钮

<Navigator
    initialRoute={{name: 'NewsList', index: 0}}
    renderScene={this.renderScene}
    sceneStyle={styles.navigator}
    navigationBar={
        <View style={styles.navbar}>
            <View style={styles.logo_container}>
                <Text style={styles.backButton}>Back</Text>
                <Image
                    source={require( 'image!Logo' )}
                    style={styles.logo}
                />
            </View>
            <View style={styles.separator} />
        </View>
    }
/>

它将帮助您将导航条形码移动到自己的组件中,将路线信息传递到其中*,然后检查路线深度

TLDR

或者只是让你的生活更轻松,使用这些插件中的任何一个为你做这项工作

反应本机导航栏

反应本机路由器


*由于添加了Navigator.getContext(this.xxx),可能不再需要通过路由。有关getContext的更多信息,请参阅navigator文档

为了澄清,我希望使用navigator的navigationBar属性来实现这一点。我认为getContext无法从传递到此属性的组件中工作。两个链接的Github repo都没有使用它。好的,对不起,错过了。navigationBar项可以访问navigator和路由信息,因此您仍然可以从navigationBar组件中检查路由索引。如果查看react原生导航栏的源代码,您将看到Kureev在index.js的第81行实现了相同的功能--(navigator.getCurrentRoutes&&navigator.getCurrentRoutes().length)
if (route.index > 0){
    //Show Back Button.
}