我使用Redux的createApi创建了useFetchLocationsQuery钩子。钩子调用服务器,返回与查询字符串匹配的城市名称。如果查询为空(例如,如果应用程序加载或如果用户清除搜索字段),我需要防止挂钩联系服务器,但不知道如何做到这一点。请指示。
import { Autocomplete, Button, Grid, TextField } from '@mui/material';
import { useFetchLocationsQuery } from '../store';
import { useMemo, useState } from 'react';
import debounce from 'lodash.debounce';
export function AddLocationComponent() {
const [query, setQuery] = useState('');
const {data } = useFetchLocationsQuery(query);
const options = (data || []).map(p => p.name);
const changeHandler = event => {
setQuery(event.target.value);
};
const debouncedEventHandler = useMemo(() => debounce(changeHandler, 2000), []);
const renderInput = params => {
return <TextField {...params} onChange={debouncedEventHandler} label="With categories"/>
}
return (
<div>
<Grid container>
<Grid item xs={10}>
<Autocomplete
options={options}
renderInput={renderInput}
onInputChange={debouncedEventHandler}
/>
</Grid>
</Grid>
</div>
);
}
字符串
2条答案
按热度按时间gz5pxeao1#
您可以使用
skip
选项或skipToken
:个字符
lo8azlld2#
看起来useFetchLocationQuery应该在yoru组件的顶层无条件调用。你可以使用useEffect钩子:
字符串