我有一个反应应用程序。后端的火力基地。国家管理的传奇。但我在表单提交上的发送只在UserForm的初始呈现时执行一次。我有一个提交处理程序:
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);
}
这是给我未定义的电子邮件和密码。更准确地说,不能从未定义的结构中变形。在“观察者传奇”中,我将传递给registerUserHandler什么?
这个故事中的错误也会导致我的rootSaga中的其他saga失败。
根传奇
export default function* rootSaga() {
yield all([
// fork(fetchUserHandler),
fork(registerUserHandler)
])
}
发布于 2022-01-04 10:47:00
试试看,我认为你犯了错误,因为你使用了错误的语法。
const formSubmitHandler = e => {
e.preventDefault();
const params = { email, password }
dispatch({ type: 'REGISTER_USER', params });
}
发布于 2022-01-04 12:05:51
如果有人无意中遇到这个问题,那么问题就在于如何将参数传递给apiRequest函数。你不会说:
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);
https://stackoverflow.com/questions/70577446
复制相似问题