Reactjs 有没有一种方法可以动态地将新路由添加到React native Stack navigation中
我们正在构建一个应用程序,其中使用React本机堆栈导航, 取决于基于输出的web api调用,我们希望将重定向添加到具有不同数据的同一类型屏幕,并且新屏幕可以创建另一个屏幕 我们在应用程序开始时使用单路径堆栈导航。 基于WebAPI调用,我想向现有堆栈注入一条新的路由,它应该能够返回到前面的屏幕 有没有办法做到这一点。引自 如果我们使用尚未在堆栈导航器上定义的路由名称来调用this.props.navigation.navigate,则不会发生任何事情。换句话说,我们只能导航到堆栈导航器上定义的路由——我们不能导航到任意组件Reactjs 有没有一种方法可以动态地将新路由添加到React native Stack navigation中,reactjs,react-native,react-navigation,react-navigation-stack,Reactjs,React Native,React Navigation,React Navigation Stack,我们正在构建一个应用程序,其中使用React本机堆栈导航, 取决于基于输出的web api调用,我们希望将重定向添加到具有不同数据的同一类型屏幕,并且新屏幕可以创建另一个屏幕 我们在应用程序开始时使用单路径堆栈导航。 基于WebAPI调用,我想向现有堆栈注入一条新的路由,它应该能够返回到前面的屏幕 有没有办法做到这一点。引自 如果我们使用尚未在堆栈导航器上定义的路由名称来调用this.props.navigation.navigate,则不会发生任何事情。换句话说,我们只能导航到堆栈导航器上定义
我建议您为应用程序创建所有可能的路由,并根据web api在应用程序的what屏幕上导航您想要的任何数据。这一切都取决于您。根据React导航文档,您可以随时更改堆栈:
索引
是要在新的操作
路线数组上导航的路线的索引。(在这种情况下,我们希望导航到route'NewRoute'
,其索引为1
)
从“反应导航”导入{StackActions,NavigationActions}
类示例扩展组件{
//…其他一些方法
导航=(id)=>{
const resetAction=StackActions.reset({
索引:1,
行动:[
导航({routeName:'Home'}),
导航({routeName:'NewRoute',参数:{id,…otherParams}}),
],
});
这个.props.navigation.dispatch(resetAction);
}
render(){
返回(
this.navigate()}>
走新路线
);
}
}
不幸的是,您能否讨论一下需要执行此操作的场景?通常传递到nav的参数是动态的。是否可以将路由插入我的当前堆栈,然后重定向到该堆栈。?如前所述,只有在堆栈导航中定义了路由,否则它将是动态页面。我们将以不同的状态(数据)一个接一个地多次打开同一屏幕。因此,我们希望以不同的路由名称dynamicallyRoute name推送同一屏幕。route name只是您知道的一个名称。您可以自定义显示在屏幕标题上的标题。例如,你可以给一个名字“AddAndEditPage”,当你路由添加时,你可以设置标题“add”,或者当你路由编辑时,你可以设置标题“edit”。我无法得到答案。它允许推送新堆栈吗。?
import {StackActions, NavigationActions} from "react-navigation"
class Example extends Component {
// ... Some other methods
navigate = (id) => {
const resetAction = StackActions.reset({
index: 1,
actions: [
NavigationActions.navigate({ routeName: 'Home' }),
NavigationActions.navigate({ routeName: 'NewRoute', params: { id, ...otherParams } }),
],
});
this.props.navigation.dispatch(resetAction);
}
render() {
return (
<View>
<TouchableOpacity onPress={() => this.navigate()}>
<Text>Go to New Route</Text>
</TouchableOpacity>
</View>
);
}
}