const LiveSearch = () => {

В данном компоненте LiveSearch при каждом вводе символа вызывается функция search с текущим значением поля ввода. Это может привести к избыточным запросам, особенно если search — это запрос к серверу.

Короткий ответ

Что ответить на собеседовании

В данном компоненте LiveSearch при каждом вводе символа вызывается функция search с текущим значением поля ввода. Это может привести к избыточным запросам, особенно если search — это запрос к серверу.

Подробный разбор

Ответ с пояснениями

Условие

const LiveSearch = () => { const [inputValue, setInputValue] = useState('')

const onInputChange = (e) => { setInputValue(e.target.value) search(e.target.value) } return ( <input value={inputValue} onChange={onInputChange} type="text" /> ) }

Searching for: <LiveSearch />

Ответ

В данном компоненте LiveSearch при каждом вводе символа вызывается функция search с текущим значением поля ввода. Это может привести к избыточным запросам, особенно если search — это запрос к серверу.

Для оптимизации обычно применяют дебаунсинг (debounce) — задержку вызова функции до тех пор, пока пользователь не перестанет вводить текст в течение определённого времени. Это снижает количество вызовов search и улучшает производительность.

Пример с использованием debounce через lodash:

import React, { useState, useCallback } from 'react'
import debounce from 'lodash.debounce'

const LiveSearch = () => {
  const [inputValue, setInputValue] = useState('')

  // Оборачиваем search в debounce с задержкой 300 мс
  const debouncedSearch = useCallback(
    debounce((query) => {
      search(query)
    }, 300),
    []
  )

  const onInputChange = (e) => {
    const value = e.target.value
    setInputValue(value)
    debouncedSearch(value)
  }

  return (
    <div>
      <input value={inputValue} onChange={onInputChange} type="text" />
    </div>
  )
}

Таким образом, search вызывается не при каждом вводе, а только спустя 300 мс после последнего символа.

Также важно учитывать очистку debounce при размонтировании компонента, чтобы избежать утечек памяти.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее