Redux Saga is Return不是我行动的有效渠道

人气:38 发布:2023-01-03 标签: reactjs redux redux-saga

问题描述

我正在尝试处理我的redux saga函数,并希望传入关于check Error redux saga函数的错误:

export function* onCheck({payload}) {
  try {
    if (internetConnected) {
      const response = yield call(checkApi, payload);
      if (token) {
          // do something
      }
    } else {
      yield put(authenticateError, 'No Internet');
    }
  } catch (error) {
    yield put(checkError, error);
  } 
}

我的操作是这样安排的:

export const checkError = (error) => {
  return {
    type: type.CHECK_IN_ERROR,
    error,
  };
};

我的减速机是这样的:

export default function (state = initialState, action) {
 case type.CHECK_IN_ERROR:
      return {
        ...state,
        error: action.payload,
      };
}

当我加载此程序并尝试检查是否在尝试/捕获时捕获错误时,抛出此错误:

ExceptionsManager.js:114 Error: put(channel, action): argument function checkError(error) {
    return {
      type: type.CHECK_IN_ERROR,
      error: error
    };
  } is not a valid channel

不确定我在这里做错了什么。请帮帮忙。

推荐答案

您错误地使用了put效果。除非您使用的是自定义频道(非常罕见),否则您将始终只有一个参数。

// wrong
yield put(fn, arg1, arg2);

// correct
yield put(fn(arg1, arg2))

接口参考:https://redux-saga.js.org/docs/api#putaction

13