Получить те же данные от родителей у детей TabNavigator - PullRequest
0 голосов
/ 09 июля 2019

Я смешиваю навигацию по стопкам, ящикам и вкладкам.

И я пытаюсь отправить реквизиты дочерним tabnavigator, но когда я вхожу в дочерний процесс, он не определен.

Вот мой Навигатор.

const PlantTabNavigator = createBottomTabNavigator({
    Infos: {
        screen: PlantDetailInfos
    },
    History: {
        screen: PlantDetailHistory
    }
});

const PlantStackNavigator = createStackNavigator({
    PlantLibrary: {
        screen: PlantLibrary,
    },
    PlantDetail: {
        screen: PlantTabNavigator,
    }
});

Вот мой родитель - PlantLibray

class PlantLibrary extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            plants: []
        };
        this._getPlants();
        this._goToPlant = this._goToPlant.bind(this);
    }

    _getPlants() {
        restGet('plants')
            .then(data => {
                this.setState({
                    plants: data.datas
                });
            });
    }

    _goToPlant(idPlant = number) {
        this.props.navigation.navigate('PlantDetail', { idPlant: idPlant })
    }

    render() {
        return (
            <View style={styles.main_container}>
                <FlatList
                    data={this.state.plants}
                    keyExtractor={(item) => item.id.toString()}
                    renderItem={({item}) => <PlantItem plant={item}
                    goToPlant={this._goToPlant}
                    />}
                />
            </View>
        );
    }
}

А вот один из моих детей - PlantDetailInfo (другой - PlantDetailHistory)

class PlantDetailInfos extends React.Component {

    constructor(props) {
        super(props);
        console.log(this.props);
    }

    render() {
        return (
            <View style={ styles.container }>
                {/*<Text>Plant Détail Infos {this.props.navigation.getParam(idPlant)}</Text>*/}
                <Text>Plant Détail Infos</Text>
            </View>
        );
    }
}

Этоработает хорошо, то есть когда я нажимаю на touchableopacity, я захожу в PlantDetailInfos, но когда я раскомментирую "{this.props.navigation.getParam (idPlant)}", я получил ошибку "undefined".

Так что я думаю, что это связано с тем, что я посылаю реквизиты для навигации «PlantDetail», которая не является «реальным компонентом», просто используйте для навигации.Но я не знаю, как этого добиться.Кроме того, я хотел бы получить информацию о тазе в 2 компонента (PlantDetailInfo & PlantDetailHistory).

...