当this.props.navigation.state.params改变

时间:2018-03-12 19:29:18

标签: javascript react-native react-navigation

我遇到this.props.navigation.state.params的问题。

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

使用此行进行重定向: this.props.navigation.navigate(menu.route, { submenu });

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

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

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

onHandleSubMenuPress = (menu, submenu) => {
    this.props.navigation.navigate(menu.route, { submenu });
}

Categories.js(接收道具并加载数据的屏幕):

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);
    }
}

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

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不知道这是否可以帮助您,请尝试一下:

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

    ],
  });
this.props.navigation.dispatch(resetAction);

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