我需要從 redux 獲取狀態,以便在 saga 檔案內的 API 呼叫中使用它。
我檢查了選擇 API。但它在這里是一個問題。
我想只為 API 呼叫使用一個函式。要運行此功能,我需要從 redux 獲取當前狀態。而不是把它放在生成器函式中,我沒有成功使用選擇。
async function getApi(){
// GET THE STATE IN THE NEXT LINE
try{
const callByCity = await fetch(`https://www.test.com/APICALL${REDUX STATE}...
`)
const result= await callByCity.json()
return result
} catch(error) {
console.log(error.message)
}
}
function* fetchMainCity(action){
try{
const mainCity = yield call(getApi);
yield put({ type: "GET_CITY_SUCCESS", result: result})
} catch (e) {
yield put({type: "GET_CITY_FAILED", message: "Sorry, We Have A Problem."})
}
}
uj5u.com熱心網友回復:
你有一個傳奇和一個async功能的混合體。您可以在傳奇中獲得狀態。你不能在async函式中得到它。因此,如果您想將 getApi 保留為異步函式,則需要先獲取狀態,然后將其傳入:
function* fetchMainCity(action) {
try {
const state = yield select();
const mainCity = yield call(getApi, state);
//...etc
}
async function getApi(state) {
// do stuff with the state
}
或者,如果您更改getApi為 saga,則它可以從狀態本身中進行選擇:
function* getApi() {
try {
const state = yield select();
const callByCity = yield fetch(`https://www.test.com/APICALL${/* state stuff */}`);
const result = yield callByCity.json();
return result;
} catch (error) {
console.log(error.message);
}
}
uj5u.com熱心網友回復:
如果遇到這個問題,請使用:
redux saga selectors, how to access state from a saga?
并使用@NicholasTower 回答。
讓我陷入我的問題的是如何向我的 getApi 函式添加引數。答案是 const mainCity = yield call(getApi, state); 正常 yield 呼叫的實體(getApi(state))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352870.html
標籤:反应 还原 redux-saga
下一篇:TypeScript錯誤:型別'type'不可分配給型別'IntrinsicAttributes&'type'&{children?:ReactNod
