【发布时间】:2019-10-07 19:47:37
【问题描述】:
问题:
我有一个使用 Material-UI TextField 的受控输入。我想要纯数字,并支持移动键盘的 type="number",但是当默认使用空字符串并且在onChange 中有一个 parseInt 时,它不允许 0(零)。所有其他数字都正确显示。
它甚至在绑定到 TextField 的基础对象中正确设置为 0。
在其他输入中,我将默认值作为空字符串(高度简化),如下所示:
<TextField
name={"inputToBeSaved"}
value={this.state.objectForSaving.inputToBeSaved|| ''}
onChange={this.handleChange}
variant="outlined"
/>
带有对应的handleChange:
handleInputChange(event) {
const target = event.target;
const value = target.value;
const name = target.name;
this.setState(prevState => ({
objectForSaving: {
...prevState.objectForSaving,
[name]: value
}
}))
}
上面的例子可以正常工作,但在尝试使用数字时却不行:
<TextField
type="number"
name={"numberToBeSaved"}
value={this.state.objectForSaving.numberToBeSaved|| ''}
onChange={this.handleChange}
variant="outlined"
/>
handleChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.type === 'number' ? parseInt(target.value) : target.value;
const name = target.name;
this.setState(prevState => ({
objectForSaving: {
...prevState.objectForSaving,
[name]: value
}
}))
}
我知道默认为 0 或使其不受控制会修复它,但有时我确实有来自服务器的值,所以我想重用组件。
我曾尝试查看此帖子,但没有找到任何好的解决方案来控制它:Initializing React number input control with blank value?
【问题讨论】:
标签: reactjs material-ui