React-Navigation:每当页面导航到

时间:2018-07-15 17:14:09

标签: javascript reactjs react-native react-navigation

我正在使用React-Navigation开发一个React-Native应用程序,并且正在使用堆栈导航器。

无论何时导航到页面(包括goBack()事件),如何调用函数?如果将方法放在构造函数中,则只会在最初创建该方法时触发,而不是通过goBack()获得该方法时触发。

2 个答案:

答案 0 :(得分:0)

您已经注意到,更改页面时永远不会卸载该组件,因此您不能依赖于构造函数,甚至不能依靠componentDidMount。关于该主题in this issue的讨论很多。

您可以例如监听didFocuswillBlur事件,并仅在页面聚焦时渲染页面。

示例

class MyPage extends React.Component {
  state = {
    isFocused: false
  };

  componentDidMount() {
    this.subs = [
      this.props.navigation.addListener("didFocus", () => {
        this.setState({ isFocused: true })
      }),
      this.props.navigation.addListener("willBlur", () => {
        this.setState({ isFocused: false })
      })
    ];
  }

  componentWillUnmount() {
    this.subs.forEach(sub => sub.remove());
  }

  render() {
    const { isFocused } = this.state;

    if (!isFocused) {
      return null;
    }

    return <MyComponent />;
  }
}

答案 1 :(得分:0)

使用导航事件 我相信您可以使用聚焦,并且会模糊

<NavigationEvents
      onWillFocus={payload => console.log('will focus', payload)}
      onDidFocus={payload => console.log('did focus', payload)}
      onWillBlur={payload => console.log('will blur', payload)}
      onDidBlur={payload => console.log('did blur', payload)}
    />

https://reactnavigation.org/docs/en/navigation-events.html