【发布时间】:2020-03-07 03:10:10
【问题描述】:
我是 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