当 this.props.navigation.state.params 改变时 React Navigation 检查

Mar*_*ães 5 javascript react-native react-navigation

我有问题this.props.navigation.state.params

我有一个抽屉导航器,它有一些菜单,一些菜单有子菜单,例如,当我点击一个子菜单时,应用程序会加载一个“类别”。“类别”菜单中的所有子菜单都将重定向到同一屏幕,但每个人都有自己的 ID 和标题。

重定向是用这一行进行的: this.props.navigation.navigate(menu.route, { submenu });

问题是,当我第一次导航到此屏幕时,我从中获取 idthis.props.navigation.state.params.submenu.id并发送请求以加载此特定 id 的内容。但是,当我打开抽屉并点击同一“类别”菜单的另一个子菜单时,this.props.navigation.state.params.submenu对象中的 id 和标题会发生变化,但我无法发送新请求以使用新 id 获取数据。我第一次使用 componentDidMount() 来获取数据(我知道 componentDidMount() 只触发一次),但我找不到我可以使用什么其他生命周期方法来调度这个新请求。

我将粘贴下面的代码部分:

SideMenu.js(自定义抽屉菜单组件):

onHandleSubMenuPress = (menu, submenu) => {
    this.props.navigation.navigate(menu.route, { submenu });
}
Run Code Online (Sandbox Code Playgroud)

Categories.js(接收 props 和加载数据的屏幕):

componentDidMount() {
    this.loadMorePosts();
}

loadMorePosts = () => {
    const { id } = this.props.navigation.state.params.submenu;

    if (this.props.nextPage <= this.props.totalPages) {
        this.props.loadCategoryPosts(id, this.props.nextPage);
    }
}
Run Code Online (Sandbox Code Playgroud)

我对页面有一些控制,我正在使用它在平面列表上无限滚动,但我几乎可以肯定这不会有问题,因为我需要在导航参数设置时将这两个道具重置为默认状态改变。

谁能帮我解决这个问题?

小智 0

我不知道这是否有帮助,但尝试一下:

   resetAction = StackActions.reset({
    index: 0,
    actions: [
        NavigationActions.navigate({ routeName: menu.route, params:{item:submenu} }),

    ],
  });
this.props.navigation.dispatch(resetAction);
Run Code Online (Sandbox Code Playgroud)

重置导航,您每次都可以使用 componentDidMount