javascript - 如何使用 React-Redux 停止在 React 中显示错误消息
问题描述
我正在构建一个简单的页面,您可以在其中输入代码并根据后端检查代码。如果代码无效,后端会返回错误消息,如“抱歉,代码无效”。错误存储在 redux 状态中,因此组件可以接受并显示。但是我遇到的一个问题是,当用户离开然后返回到组件时,仍然会显示错误,因为状态没有改变。
目前我的解决方案是使用 useEffect 钩子来检查组件是否已卸载(这意味着用户导航到另一个路径)并触发 resetError 操作,它将 redux 状态“错误”设置为 null。但我想知道这是正确的方法还是有更好/更清洁的方法?
我正在使用 React + React-Router + React-Redux + Redux-Saga + material ui
这是我的代码
function RegisterContainer({ errors, resetRegisterErrors}) {
// Other stuff...
useEffect(() => {
return function cleanup() {
resetRegisterErrors()
}
}, []);
return <Register setCode={setCode} handleSubmit={handleSubmit} errors={errors} />;
}
const Register = ({ setCode, handleSubmit, errors }) => {
return (
<Container className={classes.root} maxWidth="sm">
<ListErrors errors={errors}></ListErrors>
<form className={classes.form} noValidate onSubmit={handleSubmit}>
<TextField variant="outlined"
margin="normal"
fullWidth
label="Code"
onChange={e => setCode(e.target.value)} />
<Button type="submit"
fullWidth
variant="contained"
color="primary"
className={classes.submit}
>
Register
</Button>
</form >
</Container>)
}
// mapDispatchToProps, connect etc.
解决方案
推荐阅读
- apache-spark - 这个 Hive 查询有问题吗?
- azure - 如何删除文本文件中引号内而不是行尾的 \r\n 换行符
- spring-boot - HttpMediaTypeNotAcceptableException:在异步模式下而不是在同步模式下找不到可接受的表示
- loops - 去掉PDF密码保护,知道密码WINDOWS
- php - 如何在 X 时间后只发送一次电子邮件
- python - 如何优先考虑 conda 包而不是 pip 一?
- wordpress - 如何使 WordPress/WooCommerce 搜索功能仅搜索产品标签和产品?
- java - 如何通过 camel-cmis 设置 cm:title?
- typescript - 将 memoizee 与 TypeScript 的类一起使用
- java - 应用程序启动中的JavaFX简单按钮异常?