Реагируйте на навигацию - goBack () автоматически вызывается для экрана стекового навигатора - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть три экрана стекового навигатора (Дом, Список элементов, Деталь элемента -> тот же порядок) внутри навигатора ящиков, и все три экрана подключены к хранилищу резервных копий с помощью помощника connect ().

Когда я делаю navigate('ItemDetail') из ItemList, он переходит к экрану и немедленно возвращается к экрану ItemList.Я не уверен, почему.

Ниже приведена моя структура навигации -

const AppStack = createStackNavigator(
  {
    Home: {
      screen: HomeScreen
    },
    ItemList: {
      screen: ItemListScreen
    },
    ItemDetail: {
      screen: ItemDetailScreen
    }
  },
  {
    initialRouteName: 'Home'
  }
);

const DrawerNav = createDrawerNavigator(
  {
    DrawerApp: AppStack
  },
  {
    drawerPosition: 'right'
  }
);

const SwitchStack = createSwitchNavigator(
  {
    Loading: Loading,
    Auth: AuthStack,
    App: DrawerNav
  },
  {
    initialRouteName: 'Loading'
  }
);

Так выглядит каждый компонент экрана навигации -

export class ProviderListScreen extends Component {
  render() {
    const { navigation } = this.props;
    // ItemList is hooked up to Redux via connect() helper
    return <ItemList navigation={navigation} />; 
  }

Вкл.В моем компоненте ItemDetail я получаю данные Item через параметры маршрута из экрана ItemList и также отправляю действие (для сброса некоторой части состояния хранилища) в компоненте, который был подключен.Как только я это сделаю, автоматически отобразится предыдущий экран (ItemList).

Внутри детализации элемента я выполняю вызов API для создания резервирования для этого элемента, и объект резервирования управляется с помощью избыточности.Как только я приземляюсь на ItemDetail, я сбрасываю объект бронирования для новых данных бронирования.

Ниже приведен фрагмент компонента ItemDetailDidMount -

componentDidMount() {
    this.props.resetItembooking();
  }

Я не уверен, что вызывает такое поведение.Если я удалю экран ItemList и перейду непосредственно к экрану ItemDetail с HomeScreen, эта проблема не возникнет.

Любая помощь приветствуется.

...