React Native-导航屏幕组件之间的更新状态

问题描述 投票:0回答:1

我是React Native的新手,尽管遇到了一个看起来很简单的问题,但我似乎仍然无法克服。我正在开发一个利用Google API位置服务并响应导航的应用。

我有两个组件在stackNavigator中分组。组件A拥有位置状态,我希望组件B(这是利用异步API调用的地理位置选择器屏幕)生成取决于用户选择的位置数据,并将该数据推送到组件A并更新其状态。

我的问题在于更新组件A的状态,因为从B返回的对象是未定义的。

希望一些善良的灵魂可以帮助您!

//COMPONENT A
    const [location, setLocation] = useState({})
    useFocusEffect(useCallback(
        () => {
                const getNewLocation = () => {
                    const location = {
                        name: props.navigation.getParam('name'),
                        latitude: props.navigation.getParam('latitude'),
                        longitude: props.navigation.getParam('longitude')
                    }
                    return location
                }
                setLocation(getNewLocation())

        }, []
    ))
    return (
        <ScrollView style={style.homeContainer}>{location.name}</ScrollView>
    )


//COMPONENT B
    const handleLocationSelect = async (text) => {
        const coordsObject = await getCoordsFromString(text)
        const {results: [{geometry: {location: {lat: latitude, lng: longitude}}}]} = coordsObject
        props.navigation.navigate('Home',
            {
                name: text,
                latitude: latitude,
                longitude: longitude
            }    
        )
    }

    return (
        <ScrollView style={style.container}>
            <Text style={style.header}>Choose a location - more coming soon!</Text>
            <TouchableOpacity
                onPress={() => handleLocationSelect('Brighton, UK')}>
                <Text style={style.location}>Brighton</Text>
            </TouchableOpacity>
.......................................
.......................................
        </ScrollView>
javascript reactjs react-native react-navigation
1个回答
0
投票

props.navigation.setParams({ name: text, latitude: latitude, longitude: longitude } ) props.navigation.navigate('Home')


© www.soinside.com 2019 - 2024. All rights reserved.