我写了一个ApiArticle,它是ApiBase类的扩展,然后我在ApiArticle中写了一个getArticles函数,如下所示:
getArticles(url) {
// change the url.....
return this.defaultGet(url);
}
如果我需要获取数据,只需执行以下操作即可。
const apiArticle = new ApiArticle();
apiArticle.getArticles();
当我只是在redux的操作中获取数据时,它工作正常。但是现在我尝试学习redux-saga。 因此,我将获取数据部分更改为此:
function* fetchAllArticles(action) {
const apiArticles = new ApiArticles();
const url = `/article-management/articles`;
const res = yield call(apiArticles.getArticles, url);
yield put(fetchAllArticlesSuccess(res.data.articles));
}
然后我得到错误: TypeError:无法读取null的属性“ defaultGet”
但是如果我硬编码defaultGet而不调用它,它将起作用。
getArticles(url) {
// change the url.....
return axios.get(url).....
}
在使用redux-saga时,'this'似乎无法工作,如何解决?
答案 0 :(得分:0)
如果您需要call
效果来调用具有特定值this
的函数,则需要告诉它。有几种不同的方法可以找到in their documentation,但是一个示例是将数组作为第一个参数传递。数组的第一个元素指定应为this
,第二个元素指定要调用的函数。
const res = yield call([apiArticles, apiArticles.getArticles], url);