Redux 传奇正在返回不是我操作的有效渠道
Posted
技术标签:
【中文标题】Redux 传奇正在返回不是我操作的有效渠道【英文标题】:Redux saga is returning is not a valid channel on my actions 【发布时间】: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
不确定我在这里做错了什么。请帮忙。
【问题讨论】:
【参考方案1】:您错误地使用了put
效果。除非您使用自定义通道(非常罕见),否则您将始终只有一个参数。
// wrong
yield put(fn, arg1, arg2);
// correct
yield put(fn(arg1, arg2))
API 参考:https://redux-saga.js.org/docs/api#putaction
【讨论】:
以上是关于Redux 传奇正在返回不是我操作的有效渠道的主要内容,如果未能解决你的问题,请参考以下文章
将异步操作分派到 redux-saga 后如何捕获 redux 存储中的更改
带有 axios 返回多个值的 Redux Thunk 操作