react-select-search 配置multiple后仍需按住Cmd键才能多选
问题根因
需要按住Cmd/Ctrl才能多选的交互,是底层原生<select multiple>标签的默认行为,并非multiple属性未生效。出现该问题的核心原因是代码存在两处配置/逻辑错误,导致组件内置的自定义多选交互未激活,直接退化到原生select的交互模式。
修复步骤
修正onChange回调的取值逻辑
当前回调错误将组件整个内部state存入业务状态,而SelectSearch的onChange回调第一个入参value本身就是多选模式下的选中值数组,无需传递整个组件state。修正后的方法:handleLessonsChange(value) { this.setState({ lessons: value }); }给SelectSearch补充受控value绑定
多选模式下的SelectSearch为受控组件,需要把业务状态中存储的已选值通过value属性回传给组件,激活内置的自定义多选交互(即无需按修饰键、点击选项直接累加选中的官方示例效果)。修正后的组件调用:<SelectSearch search multiple value={this.state.lessons} // 新增该行绑定,同步已选值 emptyMessage="Cannot find class" options={this.state.lessonSelections} placeholder="Class" closeOnSelect={false} printOptions="on-focus" className='select-search' onChange={this.handleLessonsChange.bind(this)} />
修复完成后,组件会完全接管多选交互逻辑,点击选项即可直接累加选中值,不会触发原生select的修饰键多选要求,交互效果与官方Storybook示例一致。
内容的提问来源于stack exchange,提问作者JChao
相关产品推荐
相关产品推荐

