Size: a a a

React: русскоязычное сообщество

2020 August 07

СК

Сергей Коротаев... in React: русскоязычное сообщество
Например пусть форма прогрузмится
источник

СК

Сергей Коротаев... in React: русскоязычное сообщество
А потом данные прилетят и заполнится
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А как он спасает?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Тип, можно это делать в своем хуке: const [user, error, loading, refresh, cancel] = useFetchUser(id).
источник

D

Dima in React: русскоязычное сообщество
Юра Чеботаев
Я думаю, что если бы разработчики не были заняты постоянным галопированием между технологиями, то рано или поздно они пришли бы и отладили механизм кэшей.
посмотри swr от vercel
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А в основе хука такой шаблон:

const useFetchUser = id => {
 const [result, setResult] = useState()
 const [error, setError] = useState(null)
 const [loading, setLoading] = useState(false)
 
 const fetch = useCallback(async, () => {
   try {
     setError(null)
     setLoading(true)
     const response_ = await axios.get(`/users/${id}`)
     setResponse(response_)
   } catch (error) {
     setError(error)
   } finally {
     setLoading(false)
   }      
 }, [id])

 useEffect(() => {
   fetch()
 }, [id])

 return [result, error, loading, fetch]
}


Поскольку единственная не шаблонная часть здесь — await axios.get(`/users/${id}`), этот шаблон легко превращается в такую фабрику:

co
nst createFetchHook = (factory, deps) => {
 return (...args) => {
   const [result, setResult] = useState()
   const [error, setError] = useState(null)
   const [loading, setLoading] = useState(false)
 
   const fetch = useCallback(async, () => {
     try {
       setError(null)
       setLoading(true)
       const response_ = await factory(...args)
       setResponse(response_)
     } catch (error) {
       setError(error)
     } finally {
       setLoading(false)
     }      
   }, deps)

   useEffect(() => {
     fetch()
   }, deps)

   return [result, error, loading, fetch]
 }
}

const useFetchUser = createFetchHook(() => axios.get(`/users/${id}`), [id])
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Dima
посмотри swr от vercel
Ну, вот. Тем более, уже готовое решение ровно для того же есть )
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Ну, теперь я совершенно уверен, что редакс не нужен )
источник

D

Dima in React: русскоязычное сообщество
Юра Чеботаев
Ну, теперь я совершенно уверен, что редакс не нужен )
да, мы в одном проекте как раз вместо редакса заюзали swr
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Спасибо за подсказку! Это теперь мое любимое решение для рестов )
источник
2020 August 08

1

1N54N3 in React: русскоязычное сообщество
Юра Чеботаев
Вы хотите сами написать реализацию?
Видимо раз тут спросил, хотел узнать, может кто подтолкнет теоретически, как должно получиться
источник

СК

Сергей Коротаев... in React: русскоязычное сообщество
Dima
посмотри swr от vercel
Ну вот же - то что нужно!
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Всем привет! Подскажите, пожалуйста. При использовании useEffect с пустым массивом зависимостей получаю ворнинг React Hook useEffect has missing dependencies . Но мне действительно нужно, что бы в этот массив ничего не входило.
Что делать с таким предупреждением?
источник

YB

Yahor Bukhta in React: русскоязычное сообщество
Всем привет, подскажите насколько актуальна либа redux toolkit, как по современному принято создавать crud редьюсеры ?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Попробуйте добавить комментарий в конце той же строки:

// eslint-disable-line react-hooks/exhaustive-deps
.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Yahor Bukhta
Всем привет, подскажите насколько актуальна либа redux toolkit, как по современному принято создавать crud редьюсеры ?
По правде сказать, пока не понятно насколько вообще редакс актуален.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А у вас что за проект?
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Юра Чеботаев
Попробуйте добавить комментарий в конце той же строки:

// eslint-disable-line react-hooks/exhaustive-deps
.
Все равно ругается, next-line тоже пробовал
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А какая конкретно выдается ошибка? Мб не exhaustive-deps, а другая?
источник