reactjs - 新版本中的反应状态使用
问题描述
我是新来的反应,
目前我们正在使用新版本的反应,
新版本的反应状态(当前版本):
class MyForm extends React.Component {
const [state, setState] = useState([]);
myChangeHandler = (event) => {
let nam = event.target.name;
let val = event.target.value;
setState({[nam]: val});
}
render() {
return (
<form>
<h1>Hello {state.username} {state.age}</h1>
<p>Enter your name:</p>
<input
type='text'
name='username'
onChange={myChangeHandler}
/>
<p>Enter your age:</p>
<input
type='text'
name='age'
onChange={myChangeHandler}
/>
</form>
);
}
}
我如何在旧的 React 中定义它。
class MyForm extends React.Component {
constructor(props) {
super(props);
this.state = {
username: '',
age: null,
};
}
myChangeHandler = (event) => {
let nam = event.target.name;
let val = event.target.value;
this.setState({[nam]: val});
}
render() {
return (
<form>
<h1>Hello {this.state.username} {this.state.age}</h1>
<p>Enter your name:</p>
<input
type='text'
name='username'
onChange={this.myChangeHandler}
/>
<p>Enter your age:</p>
<input
type='text'
name='age'
onChange={myChangeHandler}
/>
</form>
);
}
}
我使用它类似于旧的,但是当名称状态更新时,状态中的年龄值被清除,反之亦然
解决方案
function MyForm() {
const [name, setName] = useState('');
const [age, setAge] = useState(0);
return (
<form>
<h1>Hello {state.username} {state.age}</h1>
<p>Enter your name:</p>
<input
type='text'
name='username'
onChange={(event) => setName(event.target.value)}
/>
<p>Enter your age:</p>
<input
type='text'
name='age'
onChange={(event) => setAge(event.target.value)}
/>
</form>
);
}
推荐阅读
- fortran - Gfortran 编译错误:必须将 (1) 处的逻辑与 .eqv 进行比较。而不是==
- node.js - 在 var 中使用查询字符串进行搜索在 mongoose 中不起作用
- php - JSON在解码时只返回第一个字符?
- c# - 是否可以仅为单个命名空间创建 Nuget 包?
- c# - 如何在线找到最近的点?
- python - 有什么方法可以在没有 cmp sort 参数的情况下对大对象进行排序?
- pandas - 具有多个元素的数组的真值是不明确的。使用 a.any() 或 a.all()',
- npm - 进行 npm 审计修复时不修改 package.json
- c++ - 从另一个文件c ++访问变量值
- ubuntu - 如何列出*所有*运行时间同步服务