Проблема с отбором в redux-саге. Ошибка: вызов: аргумент типа {context, fn} имеет неопределенное или нулевое значение `fn` - PullRequest
0 голосов
/ 21 октября 2019

После просмотра некоторых ответов на подобные вопросы я просто не могу заставить свой селектор работать. Вот мой файл selector.js:

export const getButtonStatus = state => state.buttonStatus;

(Это весь файл. Я не знаю, нужно ли мне что-то импортировать в него. Не похоже, что я смотрю на другие ответы, которые я ')Я видел здесь.)

и вот что я пытаюсь получить доступ к селектору в моей саге:

import { takeLatest, call, put, select } from "redux-saga/effects";
import { getButtonStatus } from "./selector.js";
...
export function* watcherSaga() {
  yield takeLatest("get-tweets", workerSaga);
}

function* workerSaga() {
  try {
    const buttonStatus = yield select(getButtonStatus);
    const response = yield call(getTweets(buttonStatus));
    const tweets = response.tweets;
    yield put({
      type: "tweets-received-async",
      tweets: tweets,
      nextTweeter: response.nextTweeter
    });
  } catch (error) {
    console.log("error = ", error);
    yield put({ type: "error", error });
  }
}
...

Вот ошибка, которую я получаю:

 Error: call: argument of type {context, fn} has undefined or null `fn`

Я новичок в Саге. Может кто-нибудь сказать мне, что я делаю не так?

1 Ответ

3 голосов
/ 21 октября 2019

Ошибка не в вашем селекторе, а в вашем yield call - она ​​принимает функцию в качестве аргумента, за которым следуют аргументы для передачи в функцию: https://redux -saga.js.org / docs / api/ # callfn-арг . Так и должно быть:

const response = yield call(getTweets, buttonStatus);

В противном случае выглядит хорошо!

...