Обложка канала

Заметки про React

Короткие и полезные заметки про React

Заметки про React

3 года назад
Открыть в
Кастомный хук для переходов без мерцаний В своем блоге Джеймс Керр поделился кастомным хуком для предотвращения мерцаний при переключении данных на графике. Каждый раз, когда пользователь выбирает другой набор данных для графика, происходит запрос на сервер за новыми данными и перерисовка графика. Когда запрос вернет данные, то произойдет мерцание интерфейса при рендере графика с новыми данными. Для решения данной проблемы автор написал кастомный хук useDataTransition. Верхнеуровнево нужно предотвратить дочернему компоненту видеть новые данные до тех пор, пока не завершится переход или не истечет время ожидания.
export function useDataTransition<T>(
  real: T,
  inTransition: boolean,
  timeout: number
) {
  const [timeExpired, setTimeExpired] = useState(false)
  const cache = useRef(real)

  useEffect(() => {
    if (!inTransition) cache.current = real
  }, [inTransition, real])

  useEffect(() => {
    let id: number
    if (inTransition) {
      id = setTimeout(() => setTimeExpired(true), timeout)
    } else {
      setTimeExpired(false)
    }
    return () => clearTimeout(id)
  }, [inTransition, timeout])

  if (inTransition && !timeExpired) return cache.current
  else return real
}
www.jameskerr.blog/posts/u…ansition
React Hook for Avoiding Flash of Empty UI While Data Transitions

Walk through a React hook that avoids the flash of empty UI when old data is cleared and new data is fetching.

www.jameskerr.blog