didFocus не работает при навигации с другого экрана - PullRequest
0 голосов
/ 01 октября 2019

Я использую «реагировать-навигацию 3.11.0» с моим собственным приложением реагировать на экспозицию, и у меня ниже структура навигации.

const orderStackNavigator = createStackNavigator(
  {
    orders: {
      screen: Orders
    },
    orderdetail: {
      screen: OrderDetail
    },
    ordermoredetails: {
      screen: OrderMoreDetails
    },
    ordernotes: {
      screen: OrderNotes
    },
    orderbillingdetails: {
      screen: OrderBillingDetails
    },
    orderdeliverydetails: {
      screen: OrderDeliveryDetails
    }
  },
  {
    //headerMode: 'none'
    defaultNavigationOptions: {
      headerStyle: [styles.headerStyle]
    }
  }
);

const inventoryManagerStackNavigator = createStackNavigator(
  {
    categories: {
      screen: Categories
    },
    products: {
      screen: Products
    },
    editProduct: {
      screen: EditProduct
    }
  },
  {
    //headerMode: 'none'
    defaultNavigationOptions: {
      headerStyle: [styles.headerStyle]
    }
  }
);

const tabNavigator = createBottomTabNavigator(
  {
    orders: {
      screen: orderStackNavigator,

    },
    inventory: {
      screen: inventoryManagerStackNavigator,
    },
  },
  {
    order: ["orders","inventory"],
    animationEnabled: true,
    tabBarOptions: {
      activeTintColor: "#026AC2",
      inactiveTintColor: "#86AAC2",
      labelStyle: { fontFamily: "ClearSans-Regular" }
      //iconStyle: { fontFamily: 'ClearSans-Bold' }
    }

  }
);

const mainStackNavigator = createStackNavigator(
  {
    login: {
      screen: Login
    },
    oAuth: {
      screen: OAuth
    },
    tabs: {
      screen: tabNavigator
    }
  },
  {
    initialRouteName: "login",
    headerMode: "none"
  }
);

const AppContainer = createAppContainer(mainStackNavigator);
export default AppContainer;

Я сталкиваюсь с проблемой, как если бы я переходил от порядка, более подробно, чтобы редактировать, изобразить егоне будет добавлять слушателя didFocus к навигации. Если я однажды перейду к инвентарю, а затем отредактирую Товар, он будет работать, как и ожидалось, даже от деталей ordermore, но если пользователь перейдет к деталям ordermore и перейдет к редактированию Product, это не сработает. Ниже приведен мой код для editProduct для добавления слушателя.

componentDidMount() {

      const { navigation } = this.props;
      this.focusListener = navigation.addListener("didFocus", () => {
        if (this.props.needToReload == true) {
          //do the stuff
        }
      });
  }

componentWillUnmount() {
    // Remove the event listener
    if (this.focusListener != null && this.focusListener.remove)
      this.focusListener.remove();
  }

Может кто-нибудь, пожалуйста, дайте мне знать, как я могу это исправить и сделать вызов didFocus при каждой загрузке компонента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...