Проблема в том, что, когда значение MultiSelect
не пустое, функция, которая вызывается на filterOptions
реквизитах MultiSelect
, продолжает выполнять вызов Http
внутри себя.
import MultiSelect from "react-multi-select-component";
...
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 => {
/* Matching the array elements to be like {lable:'',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
})
}
/* This is updating the list with response.data that is coming from the API */
set_invoices(temp_invoices);
console.log('FIRED')
},error =>{
console.log(error);
}
)
return options;
}
<MultiSelect
options={invoices}
value={selected}
labelledBy={"Select"}
onChange={setSelected}
filterOptions={test}
/>
В console.log это видно, когда я просто набираю одну букву во вводе
![This what happen when i type inside the MultiSelect input](https://i.stack.imgur.com/eFbhb.png)
Я пытался удалить set_invoices(temp_invoices);
из test function
и попытаться ввести, он показал только FIRED
два раза и только при вводе.
Я застрял на этом несколько часов и не выяснил проблему. Любая помощь приветствуется.