我正在使用React Native和Reflux开发一个IOS应用程序。当用户打开某个actionSheetIOS时,我会触发一个操作,导致商店发出异步请求。商店保留所有返回数据实例的集合,并将所有数据传递给订阅该数据集的所有视图。但是,由于actionSheet的其中一个选项需要该请求返回的数据,因此我无法保证在用户单击该选项时数据就绪。当用户单击actionSheetIOS的选项时,如何保证数据(异步)已准备就绪?
我希望我能够很好地解释这一点。此外,我在React / Reflux相对知道,所以我可能完全错过了一些东西。
答案 0 :(得分:0)
在数据准备好之前,你不能触发ActionSheetIOS
吗?像这样......
<TouchableOpacity
onPress={() => {
// call the async method first
runSomeAsyncMethod()
.then((data) => {
// wait until the method finishes before triggering ActionSheetIOS
ActionSheetIOS.showActionSheetWithOptions({
options: BUTTONS,
cancelButtonIndex: CANCEL_INDEX,
destructiveButtonIndex: DESTRUCTIVE_INDEX,
},
(buttonIndex) => {
this.setState({ clicked: BUTTONS[buttonIndex] });
});
}
}}
>
<Text>Click Me!</Text>
</TouchableOpacity>
这假设你的方法是一个承诺......但你应该明白这个想法。
答案 1 :(得分:0)
我发现最好的工作(到目前为止)是返回Promise,就好像它是请求的数据一样。 Promise将包含异步请求并解析所需的数据。
onPress处理程序如下所示:
onPress = {()=>{
returnedPromise.then((requestData)=>{
// do something with requestedData
}).catch(()=>{
// oops.. time to handle the error
})
}}