基本redux传奇,获取未定义的数据

基本redux传奇,获取未定义的数据,redux,axios,action,redux-saga,Redux,Axios,Action,Redux Saga,所以我现在正在学习Redux传奇,需要一些帮助 我已收到该操作,watcherSaga已捕获该操作并将其发送给workerSaga,workerSaga使用axios.get运行函数以接收数据。在函数中,我实际上可以console.log数据并返回它,但是当它返回到传奇时,数据是未定义的。这里有一些截图,如果你需要任何其他信息,请告诉我 您的arrow函数使用大括号{,因此没有隐式返回。要么显式返回axios.get(顺便说一句,由于您返回的是承诺,因此无需使用async/wait),要么更

所以我现在正在学习Redux传奇,需要一些帮助

我已收到该操作,watcherSaga已捕获该操作并将其发送给workerSaga,workerSaga使用axios.get运行函数以接收数据。在函数中,我实际上可以console.log数据并返回它,但是当它返回到传奇时,数据是未定义的。这里有一些截图,如果你需要任何其他信息,请告诉我


您的arrow函数使用大括号
{
,因此没有隐式返回。要么显式返回
axios.get
(顺便说一句,由于您返回的是承诺,因此无需使用
async/wait
),要么更改为parens以利用显式返回

const getBlogsSaga = async () => {
  return await axios.get(..
}


您需要
返回等待axios.get(API\u URL)

例如

rootSaga.js

import{call,put,takeEvery}来自'redux saga/effects';
从“./getBlogSaga”导入{getBlogsSaga};
常量博客={
加载:'BLOGS_LOAD',
};
功能日志(有效负载){
返回{
键入:'SET_BLOGS',
有效载荷,
};
}
函数*displayBlogs(){
const data=yield call(getBlogsSaga);
控制台日志(数据);
收益率看跌期权(数据);
}
函数*rootSaga(){
收益率(BLOGS.LOAD、displaybogs);
}
导出{rootSaga,displayBlogs};
getBlogSaga.ts

const getBlogsSaga=async()=>{
return wait Promise.resolve().然后(()=>{
返回[1,2,3];
});
};
导出{getBlogsSaga};
rootSaga.test.ts

从“/rootSaga”导入{displayBlogs};
从“redux saga”导入{runSaga};
描述('63000691',()=>{
它('should pass',async()=>{
已调度常数:任意[]=[];
等待runSaga(
{
调度:(操作)=>调度。推送(操作),
getState:()=>({}),
},
显示博客,
).toPromise();
});
});
测试结果:

通过src/stackoverflow/63000691/rootSaga.test.ts
63000691
✓ 应通过(16毫秒)
console.log
[ 1, 2, 3 ]
在src/stackoverflow/63000691/rootSaga.ts:17:11
测试套件:1个通过,共1个
测试:1项通过,共1项
快照:共0个
时间:2.235秒,估计3秒

这三个图像是:1.正在接收的操作,显示正在运行并调用getBlogsSaga的博客。2.getBlogsSaga使用axios.get获取控制台日志中显示的数据,并返回此数据。3.我的数据未定义,即使我已返回。
const getBlogsSaga = async () => (
  await axios.get(...
)