![](/img/trans.png)
[英]integrating 'react-thunk': 'cannot call a class as a function'
[英]How to call generator functions with React-Thunk
我正在將一些 sagas 轉換為 thunk。 其中一些 sagas 具有我無法在 thunk 中調用的嵌套生成器函數。 通常在傳奇中我會這樣做:
const result = yield call(myFunction, anotherSaga, params);
但是,當我嘗試將其轉換為 thunk 時:
export const myAction = createAsyncThunk(
'myAction',
async (data: Payload, { dispatch, getState }) => {
const result = myFunction(anotherSaga, params).next().value;
console.log(result)
})
console:
@@redux-saga/IO: true
combinator: false
payload: {context: null, args: Array(2), fn: ƒ}
type: "CALL"
我沒有得到任何可用的東西,因為anotherSaga
有嵌套的傳奇。 如何將其轉換為 thunk function?
您不能直接從 thunk 調用 saga,sagas 使用的效果需要由 saga 庫處理。
一些可能的解決方法:
a) 甚至將嵌套的 saga 轉換為非生成器 function
b) 如果結果不重要,您可以用調度代替call
,然后在調度此類操作時使用takeEvery
效果調用傳奇
c) 我不推薦這樣做,但在技術上可以使用 saga 中間件實例運行 saga
export const myAction = createAsyncThunk(
'myAction',
async (data: Payload, { dispatch, getState }) => {
const task = sagaMiddleware.run(anotherSaga, params)
const result = await task.toPromise()
console.log(result)
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.