我只想在我的react-multi-select-component中选择一个选项。通常对于其他库,我使用isOptionDisabled
,但对于该库,该属性无效。
import React, { useState } from "react";
import ReactDOM from "react-dom";
import MultiSelect from "react-multi-select-component";
import "./styles.css";
const App = () => {
const options = [
{ label: "Grapes 🍇", value: "grapes" },
{ label: "Mango 🥭", value: "mango" },
{ label: "Strawberry 🍓", value: "strawberry" }
];
const [selected, setSelected] = useState([]);
return (
<div>
<MultiSelect
options={options}
selected={selected}
onChange={setSelected}
labelledBy={"Select"}
/>
</div>
);
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
项目在那里:
https://codesandbox.io/s/react-multi-select-component-example-forked-9xjdpr?file=/src/index.js: 0 - 666
我的问题是我被允许选择多个选项,而我想被限制只选择其中一个。
非常感谢您的帮助!
刚才我从react-multi-select-component的npm文档中看到,你可以添加属性hasSelectAll并将其值设置为false。在第一步之后,我通过API找到的唯一方法就是添加一个带有isCreatable属性的逻辑。
react-multi-select-component
从我的角度来看,如果你想使用单一选择,我宁愿使用多选择库使其成为单一选择,相反,我会寻找一些库,使我的工作更容易。
MultiSelect react下拉菜单允许您通过添加selectionLimit={SELECTION_LIMIT}
来添加选择限制
所以你必须像这样添加:
<MultiSelect
selectionLimit={1}
options={options}
selected={selected}
onChange={setSelected}
labelledBy={"Select"}
/>
有关选择限制的更多信息请查看此处
你也可以从官方页面看到其他有用的选项在这里
有关选择限制的更多信息请查看此处
你也可以从官方页面看到其他有用的选项在这里
其实很简单。只是截断selected
值之前,他们被传递回组件。像这样一个简单的功能应该是开箱即用的。
import React, { useState } from "react";
import { MultiSelect } from "react-multi-select-component";
import "./styles.css";
export default function App() {
const options = [
{ label: "Grapes 🍇", value: "grapes" },
{ label: "Mango 🥭", value: "mango" },
{ label: "Strawberry 🍓", value: "strawberry" },
{ label: "Watermelon 🍉", value: "watermelon" },
{ label: "Pear 🍐", value: "pear", disabled: true },
{ label: "Apple 🍎", value: "apple" },
{ label: "Tangerine 🍊", value: "tangerine" },
{ label: "Pineapple 🍍", value: "pineapple" },
{ label: "Peach 🍑", value: "peach" }
];
let [selected, setSelected] = useState([]);
if (selected.length > 1) {
selected = selected.slice(1);
}
return (
<div>
<h1>Select Fruits</h1>
<MultiSelect
options={options}
value={selected}
onChange={setSelected}
labelledBy={"Select"}
isCreatable={true}
hasSelectAll={false}
/>
</div>
);
}