【问题标题】:ReactJS input type="number" only responds to spinner buttons, not manual inputReactJS input type="number" 只响应微调按钮,不响应手动输入
【发布时间】:2017-02-14 19:15:42
【问题描述】:

目前,我只能通过微调按钮更改输入字段的值。

但是当我在输入中单击以手动输入数字时,文本光标消失了,我无法在里面输入。我可以在输入时单击输入框,但这会起作用。下面是我的 React 代码的简化:

constructor(props) {
    super(props)
    this.state = {
        quantity: 1
    }
}

//This is just making some API call, but am I supposed to do anything else here to update the value?
handleQuantityChange(e) {
    this.props.editQuantity({
        quantity: e.target.value
    })
}

render() {
    return (
        <input type="number" value={this.state.quantity} onChange={this.handleQuantityChange.bind(this)}
    )
}

数字反应正确,但仅限于微调按钮。

【问题讨论】:

    标签: javascript html reactjs input


    【解决方案1】:

    输入是一个受控组件,这意味着它的值将始终是 value 属性中的值。您可以使用defaultValue 切换到不受控制的组件,也可以在每次更改时更新状态以便更新值。

    this.setState({
        quantity: e.target.value
    })
    

    【讨论】:

    • 啊,真不敢相信我错过了。谢谢。
    • 实际上 - 它并没有按我的预期工作。设置状态是一个问题,但我想我真正的问题是当我点击输入框时我失去了焦点。文本光标自动消失,我不确定那里发生了什么。
    • 也许你的 API 调用与它有关。尝试发布函数editQuantity
    • 我非常怀疑。我正在使用 Redux,我所做的只是用 editQuantity 更改 Redux 存储。也许它必须从React docsref
    • 如果你使用 Redux,为什么组件要为此存储自己的状态?
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2014-06-18
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多