[英]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.