在redux-saga中调用对象的方法时发生奇怪的问题

时间:2019-11-23 20:34:52

标签: redux-saga

我写了一个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'似乎无法工作,如何解决?

1 个答案:

答案 0 :(得分:0)

如果您需要call效果来调用具有特定值this的函数,则需要告诉它。有几种不同的方法可以找到in their documentation,但是一个示例是将数组作为第一个参数传递。数组的第一个元素指定应为this,第二个元素指定要调用的函数。

const res = yield call([apiArticles, apiArticles.getArticles], url);