antd input 输入一个字符之后就失去焦点无法连续输入如何解决?

image.png

    render() {
        const columns = [
            {
                title: '考核打分',
                dataIndex: 'specialScore',
                width: '30%',
                key: 'specialScore',
                render: (text, record, index) => {
                    if (record.contentLevel <= 2) {
                        // eslint-disable-next-line max-len
                        return <Input key={ record.id}
                                      defaultValue={record.specialScore ? record.specialScore : this.state.specialScore}
                                      value={record.specialScore ? record.specialScore : this.state.specialScore}
                                      onChange={this._onChange.bind(this, record, index)}
                        ></Input>
                    }
                }
            },
        ];
        return (
            <ScoreModal
                columns={columns}
                dataSource={this.state.dataSource}
                _onOk={this._onOk.bind(this)}
                _onCancel={this._onCancel.bind(this)}
                modalShow={this.props.modalShow}
            >
            </ScoreModal>
        )
    }
_onChange(record, index, e) {
        const { id } = record;
        record.specialScore = e.target.value
        this.setState({
            specialScore: e.target.value
        })
        let dataSource = this.state.dataSource

        let list = [];
        if (record.contentLevel === 1) {
            dataSource[index] = record
            list = dataSource
        } else if (record.contentLevel === 2) {
            list = dataSource.map(item => {
                return {
                    ...item,
                    children: item.children.map((q, i) => {
                        if (q.id === id) {
                            return {
                                ...q,
                                specialScore: e.target.value
                            }
                        } else {
                            return q
                        }
                    })
                }
            })
        }
    }
阅读 4.5k
3 个回答

可以试试 onBlur 方法替代 onChange 方法,在输入框失去焦点的时候再触发 _onChange 事件

把Input 上的value去掉,只保留defaultValue

有没有一种可能是你改变了 tableData 的值导致你整个 table 都被重新渲染了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题