2017-07-19 103 views
2

上面的問題說明了一切。我正在使用HomeScreen的StackNavigation。 HomesScreen具有組件位置和狀態位置,其中位置存儲到AsyncStorageIn React Nativigation如何更新狀態goBack

使用GoBack的()功能,我想導航到主屏幕(導航部分已經完成),並更新狀態位置。我想更新位置狀態以在HomeScreen中顯示位置。

主屏幕渲染:

<View> 
<Text style=>{(this.state.location) ? (this.state.location) : ('Select Current Location')}</Text> 
</View> 

位置組件

await AsyncStorage.getItem('location').then((location) => { 
      this.setState({location: location, persistedLocation: location}) 
     }); 
     await AsyncStorage.getItem('region').then((region) => { 
      this.setState({region: region, persistedRegion: region}) 
     }); 

流量:

enter image description here

什麼更新「goBack()」狀態到HomeScreen?

有沒有辦法以更好的方式做到這一點?

+0

'this.setState({location:location,persistedLocation:location})'是一個異步,這可能是你的主屏幕沒有獲得更新值的原因 –

+0

爲什麼?即使我沒有等待和異步也檢查。你能告訴我是否可以在從位置設置器屏幕執行goBack()之後添加回調嗎? – subhajit

回答

2

最後,經過大量的搜索,我終於在這裏找到它:https://github.com/react-community/react-navigation/issues/288

在主畫面:

this.props.navigate("Location", { onSelect: this.onSelect }); 

    onSelect = data => { 
    this.setState(data); 
    }; 

在位置屏幕:

const { navigation } = this.props; 
    navigation.goBack(); 
    navigation.state.params.onSelect({ selected: true }); 

妥善解決所有,用於改變先前的屏幕的狀態下,上GoBack的傳遞值()。

相關問題