如何在 TabNavigator 到达屏幕时启动功能? [反应导航]

How to launch function when screen in reached in TabNavigator ? [REACT NAVIGATION]

问题是函数 constructor()componentDidMount() 在加载选项卡导航器时被调用。 例如,每次用户到达名为 myScreeen 的屏幕时,我都需要调用函数 我们该怎么做?

React-Navigation 提供了一个 onNavigationStateChange props that you can use to invoke methods when navigation state change. The screen tracking example 向您展示了一个示例,您可以在其中获取新状态的键和路由名称。

从例子中,在getCurrentRouteName方法中,你可以做const route = navigationState.routes[navigationState.index];一旦你检索到route,你可以通过调用[=13]找出键和路由名称=] 和 route.routeName.

我找到了 hack :

    <Navigator
    onNavigationStateChange={(prevState, currentState) => {
  const getCurrentRouteName = (navigationState) => {
    if (!navigationState) return null;
    const route = navigationState.routes[navigationState.index];
    if (route.routes) return getCurrentRouteName(route);
    return route.routeName;
  };
  let currentRoute = getCurrentRouteName(currentState);
  if(currentRoute == "A") {
     console.log("TRIGGER")
}}/>;

然后您在组件中收听日志,如下所示:

  componentDidMount() {
    let slf = this;
    let log = console.log;
    console.log = function(txt) {
      if(txt == "TRIGGER") {
        slf.myFunction();  // CALL HERE YOUR FUNCTION
      } else {
        log.apply(console, arguments);
      }
    }
  }