我有一个带有react-select标签的react组件来过滤表中的数据。我想在某个事件发生时清除select标签的值和标签(我指的是select元素中显示的文本)。
所以我尝试创建一个按钮来触发resetSelect(),但是它不起作用。另一个问题是,当我从select中选择一个选项时,标签不会改变。
export default function Filters({ onFilterChange }) {
const [types, setTypes] = useState([{}]);
const [selectedType, setSelectedType] = useState(null);
const fromJsonToOptions = (json) => {
const options = [
{ label: "all", value: null },
...json.map((obj) => ({
label: obj.name,
value: obj._id,
})),
];
return options;
};
useEffect(() => {
//request to get types to put in select options
const responseData = response.data;
const options = fromJsonToOptions(responseData);
setTypes(options);
}, []);
const handleFilterChange = (filterName, filterValue) => {
if (filterName === "type") {
setSelectedType(filterValue);
}
onFilterChange(filterName, filterValue); //pass data to another component to render the table
};
const resetSelect = () => {
setSelectedType(null);
};
return (
<div>
<Select
options={types}
placeholder="all"
onChange={(selectedOption) => {
handleFilterChange("type", selectedOption.value);
}}
value={selectedType}
/>
<button onClick={resetSelect}> reset </button>
</div>
);
}
1条答案
按热度按时间rkue9o1l1#
若要清除select标记的value和label,可以将select标记的value和defaultValue属性设置为null。
试试这个:
然后,更新您的
fromJsonToOptions
:确保在“选择”组件中也包含标签 prop :