@Fi1iN

Как сделать поиск при бесконечном скролле?

Как можно сделать поиск, если у меня имеется бесконечный скролл на странице? Axios запрос выводит мне 10 постов, в моменте когда я "просматриваю" 10 пост, он мне выдает еще 10 постов. Так вот, у меня есть строка поиска и еще несколько параметров, по которым я хочу фильтровать получение постов от сервера. Как это возможно реализовать? Если коротко, то я хочу, чтоб если поисковая строка или один из чекбоксов был пуст, то мне выводились все посты подряд, а если что то из этого заполнено, то выводились посты именно по этим критериям. Вот код, который я имею на данный момент:

const [limit, setLimit] = useState(10);
  const [data, setData] = useState([]);
  const [fetching, setFetching] = useState(true);
  const [text, setText] = useState(null);

  useEffect(() => {
    if(fetching){
      console.log('fetching');
      axios.get(`http://localhost:3500/api/posts?limit=${limit}`)
      .then(response => {
      setData(response.data.values)
      setLimit(prevState => prevState + 10)
    })
    .finally(() => setFetching(false));
    }
  }, [fetching])
  useEffect(() => {
    document.addEventListener('scroll', scrollHandler)
    return function(){
      document.removeEventListener('scroll', scrollHandler)
    }
  })


  const scrollHandler = (e) => {
    if(e.target.documentElement.scrollHeight - (e.target.documentElement.scrollTop + window.innerHeight) < 100){
      console.log('scroll');
      setFetching(true);
    }
  }


return (
 <>
  {data.map(result => {
    <span>{result.name}</span>
    <span>{result.text}</span>
    <span>{result.category}</span>
    <span>{result.date}</span>
  })}
 </>
);
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы