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