React Native - 导航期间传递给组件的参数在稍后再次导航时与该组件保持一致

问题描述 投票:0回答:1

作为导航设置的解决方法,我最终必须导航到子导航器,然后导航到该导航器上的路线(我从父导航器转到子导航器)。最初加载子导航器时,它会加载CameraScreen.js,但我需要使用RentableScreen.js进入CameraScreen.js,这是儿童导航器上的一个屏幕。我用CameraScreen.js从主要的RentableScreen.js导航仪(App)到达HomeScreen.js。我这样做的方式是使用addListener来监听页面聚焦时,它获取参数,告诉它继续RentableScreen.js然后导航到RentableScreen.js - 代码如下:

CameraScreen.js

...

componentDidMount() {    
    this._sub = this.props.navigation.addListener(
      'didFocus',
      () => {
        if(this.props.navigation.getParam('param', '') === 'RentTab') {
          console.log('I HEARD YOU');

          this.navigator && this.navigator.dispatch(
            NavigationActions.navigate({
              routeName: 'Rentable',
            })
          );
        }
      }
    );
  }

...

这一切都正常,但似乎我传递的参数被“卡住”CameraScreen.js,因为下次我尝试导航到它(通过按下TabNavigator上的一个标签)它就像我发送它的参数一样收到之前,但我不是。似乎参数正在保存/保存在某个地方 - 我该如何清除它?或者我怎样才能让addListener在来自TabNavigator时不注意?

javascript react-native parameters parameter-passing listener
1个回答
0
投票

这段代码符合我的要求:

componentDidMount() {
    this._sub = this.props.navigation.addListener(
      'didFocus',
      () => {
        if(this.props.navigation.getParam('param', '') === 'RentTab') {
          this.navigator && this.navigator.dispatch(
            NavigationActions.navigate({
              routeName: 'Rentable',
            })
          );

          this.props.navigation.state.params = null; //THIS CLEARS THE STATE PARAMS HOW I WAS DESCRIBING
        }
      }
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.