javascript - 渲染到另一个元素时如何停止handleSubmit更新?
问题描述
现在尝试一些 React,并偶然发现了一个似乎在任何地方都没有涉及的问题。
我有一个连接到 API 的非常简单的搜索表单。当返回无效值时,它会呈现带有错误消息的 Header 3 元素,例如:
xxx 值无效 请输入有效的增值税号
简而言之,我似乎无法找到如何停止“xxx”重新渲染。在发送新请求之前,每次我开始从字段中输入或删除文本时,“无效值 xxx”都会更新,但我希望它停止
在我尝试寻找任何提示或想法的任何地方,文档中的任何地方都没有描述这种情况(或者我可能不知道在哪里寻找)。搜索互联网也没有显示任何结果。
由于某些奇怪的原因,非常简单地删除了 handleChange 并将 this.setState 移动到 handleSubmit 并没有奏效。
handleChange(event) {
this.setState({ value: event.target.value });
}
<form onSubmit={this.handleSubmit}>
<label style={Style}>Search VAT:</label>
<input type="text" style={Style} />
<input type="submit" value="Submit" />
</form>
<h3>
Invalid value {` `} {this.state.value}
<br /> <br />
Please enter valid VAT Number
</h3>
解决方案
您应该将您的无效值与您的state.value
.
因此,如果您的 API 调用返回错误,此时将您的当前状态复制state.value
到新的状态变量中,例如state.errorValue
. 这是您应该用来呈现错误消息的内容:
<h3>
Invalid value {this.state.errorValue}
<br /> <br />
Please enter valid VAT Number
</h3>
在用户再次开始输入或成功提交到 api 之后(以适合者为准),清除您的state.errorValue.
推荐阅读
- assembly - 使用 MASM 组装 IDA 输出 - “文件超出行限制”和“不允许指令前缀”
- java - 注入十六进制 Java
- c++ - 根据google c++ style guide,常量类成员字段的正确情况是什么?
- adobe-premiere - 当我添加一个图层时,整个屏幕会稍微变暗...为什么?
- rust - 我对支持 Rc 或 Box 包装类型的 Rust 向量的理解是否正确?
- unity3d - Unity 远程通知授权请求未显示
- python - 我无法对我的算法进行回测
- php - HTML2PDF 页面存储文件但不通过电子邮件发送
- javascript - 暂停功能,直到按下按钮
- .net - 无法使用 .Net c# 程序中的存储过程备份 SQL Server 数据库,但 ssms 中的相同过程可以正常工作