Как остановить перенаправление вложенного uri при использовании useEffect

#reactjs #react-hooks #uri #use-effect

Вопрос:

У меня есть крючок useEffect, который я хочу

  1. обновление фильтров
  2. обновить uri
  3. перейти к 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} />