我在存在最好与组件分离的复杂业务逻辑的情况下使用 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 中执行突变?