如何根据传奇处理程序的响应在屏幕上显示消息
How to display a message on screen depending on the response from a saga handler
联系 Saga 处理程序
export function* handlePostContactUser(action) {
try {
yield call(axios.post, '*endpoint*', action.data);
} catch (error) {
throw error;
}
};
前端表单handleSubmit函数:
let handleContactFormSubmit = () => {
let name = input.name;
let email = input.email;
let message = input.message;
dispatch({ type: 'POST_CONTACT_USER', data: {name, email, message, date}});
}
RootSaga
export function* watcherSaga() {
yield all([
takeEvery("POST_CONTACT_USER", handlePostContactUser)
]);
};
根据这段代码,如何在表单提交后根据成功与否在前端显示消息?如果是,则仅 redirect/refresh 页面,如果不是,则在屏幕上显示错误以供用户查看
由于 sagas 基本上是生成器,您需要做的是在 yield call(axios)
之后触发一个动作。以这种方式更改商店并在您的组件中获得结果。
为了处理错误,在 catch 块中放置一个动作来做同样的事情。
export function* handlePostContactUser(action) {
try {
yield call(axios.post, '*endpoint*', action.data);
yield put('MY_SUCCESS_ACTION')
} catch (error) {
yield put('MY_ERROR_ACTION')
}
};
像这样更新商店,然后在组件中获取您需要的商店属性。
联系 Saga 处理程序
export function* handlePostContactUser(action) {
try {
yield call(axios.post, '*endpoint*', action.data);
} catch (error) {
throw error;
}
};
前端表单handleSubmit函数:
let handleContactFormSubmit = () => {
let name = input.name;
let email = input.email;
let message = input.message;
dispatch({ type: 'POST_CONTACT_USER', data: {name, email, message, date}});
}
RootSaga
export function* watcherSaga() {
yield all([
takeEvery("POST_CONTACT_USER", handlePostContactUser)
]);
};
根据这段代码,如何在表单提交后根据成功与否在前端显示消息?如果是,则仅 redirect/refresh 页面,如果不是,则在屏幕上显示错误以供用户查看
由于 sagas 基本上是生成器,您需要做的是在 yield call(axios)
之后触发一个动作。以这种方式更改商店并在您的组件中获得结果。
为了处理错误,在 catch 块中放置一个动作来做同样的事情。
export function* handlePostContactUser(action) {
try {
yield call(axios.post, '*endpoint*', action.data);
yield put('MY_SUCCESS_ACTION')
} catch (error) {
yield put('MY_ERROR_ACTION')
}
};
像这样更新商店,然后在组件中获取您需要的商店属性。