reactjs - 反应 setState 不设置输入字段的状态
问题描述
我正在使用盖茨比。这是我的代码:
import React from "react"
class ContactCard extends React.Component {
constructor(props) {
super(props);
this.state = { form: { name: "test" }, message: ""};
this.handleChange = this.handleChange.bind(this);
}
handleSubmit = e => {
e.preventDefault();
};
handleChange = e => {
console.log("handleChange: " + e.target.name + " = " + e.target.value);
this.setState({ [e.target.name]: e.target.value, message: "event value: " + e.target.value });
/*
I also tried the following:
this.setState({ name: e.target.value, message: "event value: " + e.target.value });
*/
}
render() {
const { form: { name }, message } = this.state;
return (
<>
<p>{message} name: {name} </p>
<form onSubmit={this.handleSubmit}>
<input
type="text"
value={name}
name="name"
onChange={this.handleChange}
/>
</form>
</>
);
}
}
export default ContactCard
当我在输入框中输入时,我在控制台日志中看到以下内容:
handleChange: 名称 = testg
并且 P 标签更改为具有以下文本:
事件值:testg 名称:test
无论我做什么,输入框的值都不会改变它保持不变。正如我的代码中所评论的,我还尝试直接在名称上设置状态,而不是使用事件名称,但这不起作用。我还尝试了以下方法:
handleChange = e => {
console.log("handleChange: " + e.target.name + " = " + e.target.value);
var newState = { [e.target.name]: e.target.value, message: "event value: " + e.target.value };
this.setState(newState);
}
这导致相同的行为。我错过了什么?
解决方案
因此,您错误地更新了新状态。您应该在表单属性中嵌套名称。
从移动设备发送,请原谅我的格式。
推荐阅读
- jquery - 强制滚动到外部网站上的特定最高值
- vb.net - 使表单最大化,但不是全屏
- loops - (大 O)查找嵌套循环中的迭代次数
- ios - Firebase Analytics iOS 有效的自动续订本地收据验证?
- php - 在 laravel 中使用 tinymce 插入数据。但显示显示 css 样式。如何删除显示中的css样式
- python - 从 Python 字典中查找并删除冒号分隔的值(IPv6 地址)
- python - 如何确保 pip 将软件包安装到 python 3?
- c - 如何从 C 语言或 bash 程序访问 mac 粘贴板(剪贴板)缓冲区?
- ios - 在 UICollectionView 中移动的自动布局约束
- prolog - Prolog 中的 DAG 遍历 + 成本