我是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>
props.navigation.setParams({
name: text,
latitude: latitude,
longitude: longitude
}
)
props.navigation.navigate('Home')