Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Reactjs 有没有一种方法可以动态地将新路由添加到React native Stack navigation中_Reactjs_React Native_React Navigation_React Navigation Stack - Fatal编程技术网

Reactjs 有没有一种方法可以动态地将新路由添加到React native Stack navigation中

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,则不会发生任何事情。换句话说,我们只能导航到堆栈导航器上定义

我们正在构建一个应用程序,其中使用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>
    );
  }
}