reactjs - 如何根据 saga 处理程序的响应在屏幕上显示消息
问题描述
联系 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)
]);
};
基于此代码,如何在表单提交后根据是否成功在前端显示消息?如果是,则只需重定向/刷新页面,如果不是,则在屏幕上显示错误供用户查看
解决方案
由于 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')
}
};
像这样更新商店,然后在组件中获取您需要的商店属性。
推荐阅读
- json - jsonDecode() 没有正确获取 UTF8 字符
- r - 计算多个模拟数据框中多列内值范围的百分比
- javascript - Firebase 跟踪用户是否经过身份验证
- javascript - 客户端之间的离线 PWA 通信
- symfony - Symfony 表单验证开始和结束日期
- javascript - 根据 Typescript 中的值对所有 JSON 键进行分组
- html - 导航栏中的按钮无法对齐
- python - 如何使用 Selenium Safari 和 Python 通过输入标签上传文件
- java - 禁用首选项时,是否有可能使首选项中的图标变为灰色?
- docker - 加载后如何运行我的 docker 容器而不运行 docker-compose up?