Использование сравнения в массиве зависимостей useEffect - PullRequest
0 голосов
/ 17 октября 2019

Я создаю поисковый ввод с кнопкой отправки и кнопкой очистки. При нажатии кнопки «Отправить» запускается поисковый запрос с доступным значением ввода. При нажатии на кнопку очистки, он также будет запускать поисковый запрос с пустым значением. Я пытаюсь использовать сравнение в массиве зависимостей useEffect для запуска эффекта, когда значение поиска пусто для размещения кнопки очистки.

const Test = ({ doGetData }) => {
  const [status, setStatus] = useState(null);
  const [activePage, setActivePage] = useState(1);
  const [term, setTerm] = useState("");

  const handleFilter = () => {
    const query = {
      page: activePage,
      q: term,
      active: status
    };
    doGetData(query);
  };

  useEffect(() => {
    handleFilter();
  }, [status, activePage, term === ""]);

  const setEmptySearch = () => setTerm("");

  const handleInputChange = e => {
    const { value } = e.currentTarget;
    setTerm(value);
  };

  return (
    <SearchInput
      handleFilter={handleFilter}
      handleDismissSearch={setEmptySearch}
      handleInputChange={handleInputChange}
      status={status}
      term={term}
    />
  );
 };

Это работало хорошо, когда я нажимал кнопку поиска, нажимал кнопку очистки, а также когда я вручную удалял ввод. Но единственная проблема, с которой я сталкиваюсь, это когда я набираюПервая буква, это вызовет поиск. Можете ли вы помочь мне, ребята?

1 Ответ

1 голос
/ 17 октября 2019

Просто проверьте с помощью оператора if внутри вашей функции useEffect:

useEffect(() => {
  if(term === "") {
    handleFilter();
  }
}, [status, activePage, term]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...