[英]Form submission with redux-saga
我有一个反应应用程序。 Firebase 在后端。 Redux-saga 用于 state 管理。 但是我对表单提交的调度仅在用户表单组件的初始渲染时执行一次。 我有一个提交处理程序:
const formSubmitHandler = e => {
e.preventDefault();
dispatch({ type: 'REGISTER_USER', email, password });
}
我有我的传奇
export function* registerUserHandler({email, password}) {
try {
const user = yield call(apiRequests.registerUser(email, password));
yield put({ type: 'REG_USER', user })
} catch(e) {
console.log(e)
}
}
export function* registerNewWatcher() {
yield takeLatest('REGISTER_USER', registerUserHandler);
}
这给了我未定义的 email 和密码。 更准确地说,不能从未定义中解构。 我将在观察者传奇中将什么传递给 registerUserHandler?
这个 saga 中的错误也会导致我的 rootSaga 中的其他 saga 失败。
根传奇
export default function* rootSaga() {
yield all([
// fork(fetchUserHandler),
fork(registerUserHandler)
])
}
试试这个,我认为你得到了错误,因为你使用了错误的语法。
const formSubmitHandler = e => {
e.preventDefault();
const params = { email, password }
dispatch({ type: 'REGISTER_USER', params });
}
如果有人偶然发现这个问题,事实证明这是您如何将 arguments 传递给 apiRequest function 的问题。 你不会说:
const user = yield call(apiRequests.registerUser(email, password));
没有必要使用调用效果,尽管在解决方案 2 中可以看到。
解决方案 1
const user = yield apiRequests.registerUser(email, password));
解决方案 2
const user = yield call(apiRequests.registerUser, email, password);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.