我使用React-Native-Router-Flux(V。3.37)来构建Android应用程序,并尝试创建嵌套场景。使用DefaultRenderer元素我已经能够创建一个嵌套的场景,但我希望它有多个并且能够浏览它们。
我的index.android.js看起来像这样(在路由器和场景键=" root"元素内)。
<Scene
key="outer"
component={Outer}
title="Outer"
initial
hideNavBar
>
<Scene
key="inner1"
component={Inner1}
title="Inner1"
hideNavBar
/>
<Scene
key="inner2"
component={Inner2}
title="Inner2"
hideNavBar
/>
</Scene>
外部组件是这样的:
<View style={styles.container}>
<View style={styles.smallContainer}>
<DefaultRenderer
navigationState={this.props.children[0]}
onNavigate={this.props.onNavigate}
/>
</View>
</View>
像这样,Inner1组件将正确嵌套在Outer组件的smallContainer视图中。但我不知道如何导航到Inner2。如果我只是硬编码this.props.children [1]作为navigationState,它告诉我&#34; navigationState和onNavigate属性应该不为null。&#34;
如果我在Inner1中使用onPress = {Actions.inner2}放置TouchableHighlight,它就什么都不做。
我的直觉告诉我,答案在于Outer组件中DefaultRenderer元素中的onNavigate = {this.props.onNavigate}属性,但我一直无法找到有关它的任何信息。我刚刚从React-Native-Router-Flux的示例文档中深入复制了DefaultRenderer元素。
我还查看了React-Native-Simple-Router,React-Native-Router和React-Router-Native,但它们中没有一个显然更好。
答案 0 :(得分:0)
我也遇到过同样的问题。看起来 react-router-flux 的开发人员还没有针对这个问题找到合适的解决方案。目前,您必须先导航到父组件,然后从那里导航到它的子组件...
<Scene>
<Scene key="scene1">
<Scene key="scene2" hideNavBar component={Scene2}/>
</Scene>
<Scene key="scene3">
<Scene key="scene4" hideNavBar component={Scene4}/>
<Scene key="scene5" hideNavBar component={Scene5}/>
<Scene key="scene6" hideNavBar component={Scene6}/>
</Scene>
</Scene>
假设您在 scene2
,您必须执行以下操作才能到达 scene4
:
Actions.scene3()
Actions.scene4()
此解决方案复制自 https://github.com/aksonov/react-native-router-flux/issues/1801#issuecomment-307559086
这是一种非常昂贵的方法,因为您必须导航到两个组件而不是一个组件,但目前看来这是唯一的方法。