我正在使用Inertia.js,我一直很喜欢它。
我有一个问题,无论如何,我似乎不能弄清楚。我有一个选择输入,将包含从数据库中的选项,但其中很多aprox。30/40 k,所以我的想法是只取前20个,然后让用户输入搜索,并带来匹配该结果的前20个。
我所有的后端工作正常,但我的问题是显示更新后的选择选项搜索。
相关代码如下:首先是从react-select包调用AsyncSelect组件。此组件需要一个loadOptions属性,该属性将在用户开始键入时调用函数
<AsyncSelect
name="proveedores"
id="proveedores"
defaultOptions={proveedores}
loadOptions={handleChange}
/>
被调用的函数是这样的,它接收输入值和一个回调函数,在这个回调函数中,我应该搜索新的数据并返回它
function handleChange(inputValue,callback) {
setValues(values => ({
...values,
["search"]: inputValue
}));
callback()
}
问题是要在搜索中加载新数据,我使用的是useEffect
useEffect(() => {
if (prevValues) {
const query = pickBy(values)
Inertia.get(window.location.href, query, {
replace: true,
preserveState: true
});
}
}, [values]);
使用useEffect的搜索工作正常,如果我执行console.log,我将看到proveedores的列表已更新,但问题是我如何告诉handleChange函数的回调它应该侦听useEffect并在完成时使用proveedores的新值
如果有人必须使用Inertia + React来做这样的事情(从数据库中搜索数据的React Select),我真的很感激关于如何实现它的一些反馈。
谢谢!
1条答案
按热度按时间edqdpe6u1#
实际上,你可以使用
Axios
和不使用useEffect
,这里有一个例子(对我来说很有效):