当在输入中输入地址时,我遇到了一个问题,这是什么意思,提示从服务器发送到该地址,并且我在AsyncSelect中显示这些提示,但事实是我总是获得先前的状态,例如例如,我输入地址:street 22,然后我得到一条直线,然后输入33,然后得到22,如何获取用户输入的内容?即当前状态
const { addressList } = props; // get addresses to server
const [addresses, setAddresses] = useState(null);
<AsyncSelect
cacheOptions
defaultOptions={addressOptions}
loadOptions={promiseOptions}
className="modal_list-options"
noOptionsMessage="Error find"
placeholder="Enter address..."
onChange={handleChangeSelectAddress}
/>
const promiseOptions = (inputValue) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(onFilteredAddress(inputValue));
}, 1000);
});
};
const onFilteredAddress = async (address) => {
const finallyAddress = `${selectedCity} ${address}`;
if (address) {
const success = await onHandleGetAddressList(finallyAddress).then(
(data) => {
setAddresses(data); // setState adresses
return true;
}
);
if (success) {
return addressesList;
} else {
return addressOptions;
}
}
};
const addressesList = useMemo(() => {
if (addresses) {
const { payload } = addresses;
const { data } = payload;
const { suggestions } = data;
return suggestions.map((el) => {
return {
value: el,
label: el,
};
});
} else {
return addressOptions; // defaultOptions
}
}, [test, addressList]);