【发布时间】:2019-03-09 02:37:42
【问题描述】:
我正在使用 react、redux、redux thunk 和 axios 使用它们的 api 从 reddit 获取随机图像。如果图像扩展名是 gifv 或域不在范围内,我想递归调用该函数。但是,当我递归调用该函数时,它不会进入 return 语句。我假设这与承诺有关,但我不确定。
export function fetchData(){
let ran = randomNumber();
return(dispatch) => {
return axios.get(`https://www.reddit.com/r/${subreddits[ran]}/random.json`)
.then((res) => {
let post = res.data[0].data.children[0].data;
if(post.domain === 'i.redd.it' || post.domain === 'i.imgur.com') {
let imageURL = post.url;
if(imageURL.split()[3] !== 'gifv'){
dispatch(GetImageFromSubSuccess(imageURL))
}else{
return fetchData();
}
}else {
return fetchData();
}
}).catch(err => console.log(err))
}
}
【问题讨论】:
-
如果
fetchData是你的 redux 操作之一,我假设它是,你必须用它调用 dispatch。dispatch(fetchData()) -
@MaxBaldwin fetchData 不是 redux 操作之一。相反,这是
-
@MaxBaldwin 导出函数 GetImageFromSubSuccess(url){ return{ type: 'GET_IMAGE_FROM_SUB', imageUrl: url } }
-
thunk 应该支持 dispatch(fetchData())
-
不应该是:return dispatch(GetImageFromSubSuccess(imageURL))
标签: javascript reactjs redux axios redux-thunk