reactjs - 为什么我的组件在触发函数时没有改变状态
问题描述
我是 React 的新手,当用户在 inout 中键入一些值时,我试图更改状态。由于某种原因,该组件似乎不起作用。谁能解释一下为什么我没有成功实现这个功能?谢谢,华伦天奴
import React, { Component } from 'react';
class Stake extends Component {
state = ({
userStake: null
});
handleUserStake = (e) => {
e.preventDefault();
let newStake = e.target.value;
this.setState({
userStake: [...userStake, newStake]
})
}
render() {
return (
<div>
<form onSubmit={this.handleUserStake}>
<input
style={{
marginLeft: "40px",
width: "50px"
}}
type="text"
name="stake"
required
/>
</form>
</div >
);
}
}
export default Stake;
解决方案
要完成受控输入,您应该添加value
指向相应状态的属性,onChange
这将处理其状态更新。为您onSubmit
使用另一个特定于它的处理程序。您还应该修复您的 handleChange 以正确更新其值:
class Stake extends Component {
state = ({
userStake: [],
input: ''
});
handleUserStake = (e) => {
let input = e.target.value;
this.setState({ input });
}
handleSubmit = () => {
e.preventDefault();
let newStake = this.state.input;
this.setState({
userStake: [...this.state.userStake, newStake],
input: '',
})
}
render() {
return (
<div>
<form onSubmit={this.handleSubmit}>
<input
style={{
marginLeft: "40px",
width: "50px"
}}
type="text"
name="stake"
value={this.state.input}
onChange={this.handleUserStake}
required
/>
</form>
</div>
);
}
}
export default Stake;
推荐阅读
- docker - 是否有任何地方记录的工件的示例 security.import.xml?
- firebase - firebase 函数进行的外部 API 调用的起源是什么?
- android - 使用安卓手机作为服务器
- powerbi - 如何创建将正确值从行解析为列表的新列
- java - RestTemplate 请求中的连接超时无法正常工作
- macos - Hadoop 启动时异常
- javascript - Javascript:有些东西太简单而无法与外部链接?
- ios - Xcode Undefined symbols for architecture x86_64 Kudan iOS
- facebook-graph-api - Facebook OG 不会检索我的照片
- asp.net-mvc - 在会话超时 ASP MVC 6 上将任何页面重定向到登录屏幕