问题描述
我正在尝试处理我的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