【发布时间】:2021-08-12 16:36:09
【问题描述】:
我在存在最好与组件分离的复杂业务逻辑的情况下使用 Redux-Saga。我们正在采用 RTK 查询,无法手动使用端点。是的,我知道 Redux 最佳实践文档建议尽可能使用 Thunk。
这个特殊的 saga 任务示例并不是使用 Redux-Saga 的好案例,但在某些情况下,业务逻辑非常复杂/冗长/复杂,以至于它不属于一个组件并且我们使用 saga不能(优雅地)用简单的 Thunk 模拟的功能。在这个例子中,我想在后端做一个简单的突变(发布请求):
export function* addNewCustomerTask(action: ReturnType<typeof addNewCustomer>) {
const { name, industry, defaultIdentifierObfuscationLevel } = action.payload
if (!name) {
yield put(setToast({ text: 'Name can not be empty', style: ToastStyle.Error }))
}
else if (!industry) {
yield put(setToast({ text: 'Industry can not be empty', style: ToastStyle.Error }))
}
else if (!defaultIdentifierObfuscationLevel) {
yield put(setToast({ text: 'Default identifier obfuscation level can not be empty', style: ToastStyle.Error }))
}
else {
try {
yield call(authApiEndpoints.addCustomer.initiate, action.payload)
}
catch {
console.error('Error')
}
}
}
yield call(authApiEndpoints.addCustomer.initiate, action.payload) 语句没有任何作用。
如何在 Saga 中执行突变?
【问题讨论】:
标签: redux-saga redux-toolkit rtk-query