javascript - 无法在 React 中设置文本框值
问题描述
class Todo extends Component {
constructor(props) {
super(props);
this.state = {
amount:1000000
}
}
handleChange= (e)=> {
const number= Number(e.target.value).toLocaleString();
console.log(number);
this.setState({
amount: number
})
}
render() {
return (
<div>
<input onChange={this.handleChange} value={this.state.amount.toLocaleString()}/>
</div>
)
}
}
ReactDOM.render(<Todo />, document.getElementById('root'));
我是一个新的前端开发人员。我无法更改超过 9,999 的文本框的值。我得到了 NaN
解决方案
问题是一旦你进入数千个,你就会引入逗号。当您尝试将逗号转换为数字时,逗号会导致问题。使用它来去除逗号:.replace(/,/g, '')
.
您也应该只.toLocalString
在显示值时使用。设置状态和读取状态时不需要使用它。
工作示例:
class Todo extends React.Component {
constructor(props) {
super(props);
this.state = {
amount:1000000
}
}
handleChange= (e)=> {
const number= Number(e.target.value.replace(/,/g, ''));
console.log(number);
this.setState({
amount: number
})
}
render() {
return (
<div>
<input onChange={this.handleChange} value={this.state.amount.toLocaleString()}/>
</div>
)
}
}
ReactDOM.render(<Todo />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"/>
推荐阅读
- image-processing - 如何使用 WebGL2 修复这个 16 位 RGBA PNG 的显示?
- python - 在完整数据帧上拟合模型后,如何从数据帧预测单行
- operating-system - 为什么存在寄存器以及它们如何与 cpu 一起工作?
- java - Spring Data-JPA 多个嵌套对象
- scala - 在线代码编辑器 Scastie 如何读取输入文件?
- swift - Swift:如何将数据从 tableview 单元格传递到按钮?
- browser-cache - 在 POST 请求中提交表单后,点击返回按钮时页面未更新
- python - 如何使用 python 从远程 Windows 服务器获取文件?
- mysql - Truncate Text using sql (all text after a DIV tag)
- android - 本机应用程序崩溃 - 获取内存地址问题 - com.android.runtime/lib64/libart.so & #00 0x00000000afef03c4