#reactjs #react-hooks #uri #use-effect
Вопрос:
У меня есть крючок useEffect, который я хочу
- обновление фильтров
- обновить uri
- перейти к uri
Я получаю начальные фильтры из uri, а затем каждый раз, когда панель поиска меняет фильтры, страница должна обновляться, используя новые фильтры, и uri должен обновляться и переходить, потому что я хочу, чтобы каждый поиск был шагом, браузер может двигаться вперед или назад;
Но мой крючок useEffect, похоже, вошел во вложенный цикл, все время продолжает визуализироваться.
Есть какие-нибудь предложения по этой функции?
Если я обновлю uri только через window.history.replace, это будет работать, но у меня больше нет функции возврата/переадресации.
[filters, setFilters] = useState(getURIFilters(uri));
...
useEffect(() => {
if (CompleteFilters(filters)) {
consume(filters);
const filterString =
filters.size > 0
? filters.toString()
: '';
const searchParams = new URLSearchParams(location.search);
if (filterString === '') {
searchParams.delete('q');
} else {
searchParams.set('q', powerFilterQuery);
}
uri.setQueryString(searchParams.toString());
//windows.history.replaceState({}, '', uri)
// this will only update uri won't redirect, so I used goURI
goURI(uri);
}
}, [powerFilters, uri]);
...
<SearchBar onChange={setFilters} />