在下面的Promise中提供调度
Promise.resolve(this.props.dispatch(getAPI(item))) // dispatch
.then(function (result) { //result is the action passed in
Linking.openURL(result.url);
})
一旦调度执行并调用一个api,然后返回一个类似url的值,我可以立即在then()内部访问api结果吗?这样我就可以立即使用结果并将其传递给Linking.openUrl()
我问的原因是因为当api结果发送到mapToProps时,我似乎无法获得最新的道具。如果我尝试使用诸如componentWillUpdate之类的生命周期方法来强制更新道具,它将多次调用componentWillUpdate,并且在打开网址的同时,您可以在屏幕上看到它多次刷新
答案 0 :(得分:0)
考虑要调用的api封装在 promise 中,
function * defaultSaga (action) {
try {
... Other Code
const result = yield call(YourApi, params) // Check the docs for redux-saga call
// On api Success
if(result && result.ok) {
yield call(Linking.openUrl, result.url)
}
} catch(ex) {
yield put(// Any error action here)
}
}