Мне нужно делать запрос к серверу каждый раз, когда пользователь вводит Multiselect
ввод для извлечения данных на основе поискового запроса.
Если я устанавливаю список с фиксированными значениями, он отлично работает и фильтрует список.
import MultiSelect from "react-multi-select-component";
...
const options = [
{ label: "Grapes ?", value: "grapes" },
{ label: "Mango ?", value: "mango" },
{ label: "Strawberry ?", value: "strawberry" },
];
const [selected, setSelected] = useState([]);
<MultiSelect
options={options}
value={selected}
onChange={setSelected}
labelledBy={"Select"}
/>
Я пытался использовать filterOptions
props
на MultiSelect
. Проблема в том, что когда я нажимаю MultiSelect
и начинаю вводить ввод, он продолжает звонить на сервер до тех пор, пока я не очищу значение ввода MultiSelect. он остановился.
const [invoices,set_invoices] = useState([]);
const [selected, setSelected] = useState([]);
function test(options, filter) {
if (!filter) {
return options;
}
var data={'invoice_number':'22'}
axios.post('http://localhost:4000/get_invoice_by_number',data).then(
response => {
// The for loop below is to make the invoices objects like
// {label:'',value:''}
var temp_invoices=[];
for(var i =0;i<response.data.length;i++){
temp_invoices.push({
label:response.data[i].invoice_number,
value:response.data[i].invoice_number
})
}
// JSON.stringify(temp_invoices)
set_invoices(temp_invoices);
},error =>{
Swal.fire({
title: 'Error!',
text: 'Please Contact your software developer',
icon: 'error',
confirmButtonText: 'OK'
})
}
)
return options;
}
<MultiSelect
options={invoices}
value={selected}
labelledBy={"Select"}
onChange={setSelected}
filterOptions={test}
/>