我正在尝试对API调用进行排序,以便可以调用端点,等待它成功,然后从状态中选择所需的值。
我是一个非常新的还原传奇,我发现很难理解如何实现这一点!
我尝试过的:
因此,我们在执行API调用时尝试并阻止:
const resp = yield putResolve(assistantActions.fetchSustainability());
在后面的代码中,我们从状态中选择更新后的值:
const assistant = yield select(getAssistant);
调用的操作如下所示:
export const fetchSustainability = () => ({ type: FETCH_SUSTAINABILITY });
在这个传奇中,我们:
yield takeEvery(FETCH_SUSTAINABILITY, fetchSustainability);
然后函数返回一个promise:
function fetchSustainability() {
return axios.get(`${url}/sustainability`);
}
我不确定我已经设置了任何地方附近的权利,因为我已经做了很多改变,试图让它工作!
select语句立即执行,由于调用未被阻塞,因此状态未被正确更新。
我的方法正确吗?如果不正确,有没有人能够提供一个简单的工作示例来说明如何实现阻塞调用。
1条答案
按热度按时间wwtsj6pe1#
所以
takeEvery
的第二个参数需要是生成函数;在其中你可以调用
fetchSustainability
您的操作
fetchSustainability
应返回一个Promise。下面是一个例子来强调put和putResolve之间的区别。
https://codesandbox.io/s/redux-saga-example-x77jb本示例使用
thunkMiddleware