onChange react-select 多个选项
onChange react-select multiple options
我需要检测我输入的内容是否可搜索 react-select
。根据 official 文档,首先我必须传递 isMulti
道具才能 select 不仅仅是一个选项。
实际的内置 onChange
仅在我 select 一个选项时检测到变化,而不是在我输入框时检测到变化。我需要它,因为如果我在该输入框中键入内容,我必须调用 API。
这是我的 select:
<Select
options={myOptions}
isMulti
loadingIndicator={true}
styles={selectStyle}
onChange={(e) => console.log(`e`, e)}
/>
实际上 onChange
向我记录了一个包含选项 selected 的数组。我怎样才能改变它,例如,如果我输入“fo”然后我有“fo”?有什么选择或方法吗?
There is no onKeyDown
props available in react-select
's documentation.
您可以做的如下:
class App extends Component {
onKeyUp = () => {
console.log("I see");
// Your rest code
};
render() {
return (
<div onKeyUp={this.onKeyUp} className="App">
<Select
options={myOptions}
isMulti
loadingIndicator={true}
styles={selectStyle}
onChange={(e) => console.log(`e`, e)}
/>
</div>
);
}
}
是的,我们有异步 select 选项可以在用户输入时从 API 加载数据。
下面我附上了他们官方网站上记录的代码。
https://react-select.com/home#async
import { useState } from "react";
import AsyncSelect from "react-select/async";
const colourOptions = [
{ label: "Oranage", value: "orange" },
{ label: "Yellow", value: "yellow" },
{ label: "Blue", value: "blue" }
];
const SelectOption = () => {
const [inputValue, setInputValue] = useState("");
const filterColors = (inputValue) => {
return colourOptions.filter((i) =>
i.label.toLowerCase().includes(inputValue.toLowerCase())
);
};
const promiseOptions = (inputValue, callback) => {
setTimeout(() => {
callback(filterColors(inputValue));
}, 1000);
};
const handleChange = (newValue) => {
const inputValue = newValue.replace(/\W/g, "");
setInputValue(inputValue);
return inputValue;
};
return (
<AsyncSelect
cacheOptions
defaultOptions
loadOptions={promiseOptions}
onInputChange={handleChange}
/>
);
};
export default SelectOption;
我需要检测我输入的内容是否可搜索 react-select
。根据 official 文档,首先我必须传递 isMulti
道具才能 select 不仅仅是一个选项。
实际的内置 onChange
仅在我 select 一个选项时检测到变化,而不是在我输入框时检测到变化。我需要它,因为如果我在该输入框中键入内容,我必须调用 API。
这是我的 select:
<Select
options={myOptions}
isMulti
loadingIndicator={true}
styles={selectStyle}
onChange={(e) => console.log(`e`, e)}
/>
实际上 onChange
向我记录了一个包含选项 selected 的数组。我怎样才能改变它,例如,如果我输入“fo”然后我有“fo”?有什么选择或方法吗?
There is no
onKeyDown
props available inreact-select
's documentation.
您可以做的如下:
class App extends Component {
onKeyUp = () => {
console.log("I see");
// Your rest code
};
render() {
return (
<div onKeyUp={this.onKeyUp} className="App">
<Select
options={myOptions}
isMulti
loadingIndicator={true}
styles={selectStyle}
onChange={(e) => console.log(`e`, e)}
/>
</div>
);
}
}
是的,我们有异步 select 选项可以在用户输入时从 API 加载数据。 下面我附上了他们官方网站上记录的代码。 https://react-select.com/home#async
import { useState } from "react";
import AsyncSelect from "react-select/async";
const colourOptions = [
{ label: "Oranage", value: "orange" },
{ label: "Yellow", value: "yellow" },
{ label: "Blue", value: "blue" }
];
const SelectOption = () => {
const [inputValue, setInputValue] = useState("");
const filterColors = (inputValue) => {
return colourOptions.filter((i) =>
i.label.toLowerCase().includes(inputValue.toLowerCase())
);
};
const promiseOptions = (inputValue, callback) => {
setTimeout(() => {
callback(filterColors(inputValue));
}, 1000);
};
const handleChange = (newValue) => {
const inputValue = newValue.replace(/\W/g, "");
setInputValue(inputValue);
return inputValue;
};
return (
<AsyncSelect
cacheOptions
defaultOptions
loadOptions={promiseOptions}
onInputChange={handleChange}
/>
);
};
export default SelectOption;