【问题标题】:Redux saga is returning is not a valid channel on my actionsRedux 传奇正在返回不是我操作的有效渠道
【发布时间】:2021-12-20 16:14:41
【问题描述】:

我正在尝试使用我的 redux saga 函数并希望在 checkError 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,
      };
}

当我加载这个并尝试检查在我的 try/catch 上捕获错误时,它会抛出这个错误:

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

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

【问题讨论】:

    标签: reactjs redux redux-saga


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 2018-10-14
      • 2018-12-08
      • 2021-05-16
      • 2019-12-04
      相关资源
      最近更新 更多