javascript - 如何在按钮单击时清除反应选择值而不将其添加到选项中?
问题描述
我正在使用react-select
并且我想在按钮单击时清除所选值而不将其添加到options
属性中
我试过了
- 使用状态来操作选项属性,但显然在调用
clearValue()
方法时,默认情况下会自动推送到选项数组。
问题
如何告诉react-select
只清除所选值而不将其添加到选项数组中的任何位置?
import React, { useRef } from "react";
import Select from "react-select";
export default function App() {
const selectInputRef = useRef();
const onClear = () => {
selectInputRef.current.select.clearValue();
};
return (
<div className="App">
<h1>Select Gender</h1>
<Select
isMulti
ref={selectInputRef}
options={[
{ value: "male", label: "Male" },
{ value: "female", label: "Female" }
]}
/>
<button onClick={onClear}>Clear Value</button>
</div>
);
}
这是我的CodeSandbox 链接
解决方案
您需要自己管理所选值和选项的状态并相应地对其进行操作:
export default function App() {
const [selected, setSelected] = useState([]);
const [options, setOptions] = useState([
{ value: "male", label: "Male" },
{ value: "female", label: "Female" }
]);
const handleClear = () => {
setOptions((currentOptions) => currentOptions.filter((currentOption) => !selected.includes(currentOption)));
setSelected([]);
};
return (
<div className="App">
<h1>Select Gender</h1>
<Select isMulti value={selected} options={options} onChange={setSelected} />
<button onClick={handleClear}>Clear Value</button>
</div>
);
}
推荐阅读
- java - 为什么来自 gridView 的 onItemClick 无法正常工作?
- sql - 从 SQL 解析 XML 文件
- c# - 使用私有集自动映射目标集合属性
- django - Django 在 iframe 中显示 pdf
- java - 我需要编写一个 while 循环,它将在 java 中使用从 1 到 10 的计数值迭代 10 次
- php - Symfony 4 - 无法持续级联我的实体(错误:通过关系找到了一个新实体)
- shell - 文件 Shell 脚本中的日期比较
- python - 雪花石膏如何使用固定字体渲染参数
- javascript - javascript : 将数组转换为 json 格式
- c++ - 滥用逗号运算符来柯里化函数参数