javascript - 以编程方式更改 react-select 组件的值
问题描述
我在 React 应用程序中大量使用react-select组件。我创建了一个包装器组件,它允许我指定一个用例,我希望在选择时重置所选值。
我的组件包装器定义为:
import React, { useRef } from 'react';
import Select from 'react-select'
export const SelectComponent = (props) => {
const selectRef = useRef(null);
const valueSelected = (item) => {
if (!item || item.value === props.selectedValue) {
return;
}
if (props.resetOnSelect) {
selectRef.current.select.clearValue();
}
props.onValueSelected(item);
}
return <div className="modal-form-row">
<Select ref={selectRef} options={props.options} onChange={valueSelected} id={props.id} isClearable={true} isSearchable={true} placeholder={props.label} value={props.selectedValue} />
</div>;
}
这就是组件被引用的方式:
const options = [
{ label: 'Item1', value: '1' },
{ label: 'Item2', value: '2' },
{ label: 'Item2', value: '2' },
];
<SelectComponent id="select-list" label="Pick an Item" options={options} onValueSelected={this.handleNewItem} value="" resetOnSelect={true} />
它似乎正在工作,因为我的valueSelected
处理程序第二次使用 null 参数调用,但选择组件本身不会重新呈现,它会显示用户的选择。关于下一步我应该尝试什么的任何想法?
解决方案
只需传递null
给值(或空字符串):
<Select ... value={ null } />
它的行为就像任何其他受控组件一样:
- 使用新值调用 onChange 处理程序
- 该值已设置,在本例中为
null
请注意,您已设置value
为props.selectedValue
,这是未定义的,如果value
未定义(或根本没有给出),则使用不受控制的组件行为。
推荐阅读
- vega - 如何将背景图像添加到 vega/vegalite 画布并包含在导出 PNG 中
- python - QAbstractTabelModel.data() 总是得到 index.row() == 0 并且只显示 1 行
- javascript - javascript 中的脚本等于 php 中的 $_SERVER['SCRIPT_FILENAME'] 是什么?
- gremlin - 在 gremlin 上过滤顶点
- spring - 使用与 JDL 的多对多关系时出错 - JHipster
- tensorflow - 如何在 Raspi 3 上使用 libtensorflow-lite.a?
- rest - golang gorilla/mux 和 rest GET 问题
- c++ - 如何从 C++ 代码中禁用 Windows DPI 虚拟化?
- python-3.x - 在 torchvision 模型中查找所有 ReLU 层
- c - 读取搜索算法完成的比较次数