从子级TabNavigator中的父项获取相同的数据

时间:2019-07-09 15:53:57

标签: react-native navigation react-props react-native-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)}”时,出现错误“未定义”。

因此,我认为与将道具发送到“ PlantDetail”导航(这不是“真实组件”)相关的事实与之相关,只是用于导航。但是,我不知道如何实现这一目标。 此外,我想将tase信息分为2个组件(PlantDetailInfo和PlantDetailHistory)。

0 个答案:

没有答案