如何在Antd Input.Search组件搜索后设置输入框只读?
解决Antd Input.Search单独禁用输入框的问题
这个问题我之前也碰到过!Antd的Input.Search组件直接用disabled属性确实会把输入框和搜索按钮一起禁用,不过咱们可以通过inputProps这个属性单独控制内部的输入框,完美避开按钮被禁用的问题~
给你两种实用方案,根据你的视觉和交互需求选就行:
方案1:设置输入框为只读(视觉无变化,不可编辑)
如果希望输入框看起来和正常状态一样,但用户不能修改内容,用readOnly属性最合适。修改你的代码如下:
<Input.Search enterButton={inProgress ? 'Cancel' : 'Search'} onSearch={text => this.go(text)} allowClear={inProgress ? false : true} inputProps={{ readOnly: inProgress }} // 仅控制输入框只读 />
方案2:设置输入框为禁用状态(视觉变灰,不可编辑)
如果需要明确展示输入框的禁用状态(变灰),但保留按钮的可点击性,就给内部输入框单独传disabled属性:
<Input.Search enterButton={inProgress ? 'Cancel' : 'Search'} onSearch={text => this.go(text)} allowClear={inProgress ? false : true} inputProps={{ disabled: inProgress }} // 单独禁用输入框,按钮不受影响 />
原理说明
Input.Search的inputProps属性会把你传入的配置透传给组件内部原生的<input>元素,这样就能精准控制输入框的状态,而不会影响到右侧的搜索/取消按钮。另外你原来代码里的disabled={inProgress ? false : true}可以直接去掉,因为我们已经通过inputProps单独处理输入框的状态了。
内容的提问来源于stack exchange,提问作者Nili




