redux 如何正确使用还原传奇putResolve

xmakbtuz  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在尝试对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语句立即执行,由于调用未被阻塞,因此状态未被正确更新。
我的方法正确吗?如果不正确,有没有人能够提供一个简单的工作示例来说明如何实现阻塞调用。

wwtsj6pe

wwtsj6pe1#

所以takeEvery的第二个参数需要是生成函数;
在其中你可以调用fetchSustainability

function* generator() {
   yield call(fetchSustainability); // calls the actual function
}

// in the saga
yield takeEvery(FETCH_SUSTAINABILITY, generator);

您的操作fetchSustainability应返回一个Promise。
下面是一个例子来强调put和putResolve之间的区别。
https://codesandbox.io/s/redux-saga-example-x77jb本示例使用thunkMiddleware

相关问题