Size: a a a

2019 October 02

SG

Stas G in React Kyiv
про хуки, допустим, я нашел интересный пример тут – https://www.robinwieruch.de/react-hooks-fetch-data
источник

UU

Untitled Unsigned in React Kyiv
Stas G
🙏 Покажите, как красиво хендлить лоадинг стейт фетчей в:
а) класс-компонентах
б) хуках
источник

SG

Stas G in React Kyiv
вот подход с хуком я примерно такой же придумал
источник

SG

Stas G in React Kyiv
Declarative Action Callback
источник

AR

Alexey Raspopov in React Kyiv
Stas G
🙏 Покажите, как красиво хендлить лоадинг стейт фетчей в:
а) класс-компонентах
б) хуках
можно ещё тут почитать, если хочется bleeding edge
https://github.com/alexeyraspopov/react-warehouse
(есть надежда что через 3 недели это будет уже не bleeding edge)
источник

SG

Stas G in React Kyiv
выглядит интересно, спасибо
источник

SG

Stas G in React Kyiv
а если я по-старинке в контейнере собираю данные?
источник

SG

Stas G in React Kyiv
кроме ручного setState({ isLoading: true })
источник

SG

Stas G in React Kyiv
хотя в принципе я понял, что я этого почти не делаю. так что надо будет попробовать)
источник
2019 October 03

TS

Terry Sahaidak in React Kyiv
Stas G
кроме ручного setState({ isLoading: true })
function fetchData(fetcher) {
 const promise = useRef(null);
 const data = useRef(null);
 const [forceUpdateDep, forceUpdate] = useState(0);
 const [state, setState] = useState({
   isLoading: false,
   isError: false,
   error: null,
 });

 useEffect(() => {
   data.current = null;
   setState({
     isLoading: true,
     isError: false,
     error: null,
   });

   promise.current = fetcher()
     .then((res) => {
       data.current = res;
       setState({
         isLoading: false,
       });

       promise.current = null;
     })
     .catch((err) => {
       setState({
         isLoading: false,
         isError: true,
         error: err,
       });
     });
 }, [fetcher, forceUpdateDep]);

 const retry = useCallback(() => {
   forceUpdate((val) => val + 1);
 }, []);

 return {
   isLoading: state.isLoading,
   isError: state.isError,
   retry,
   data: data.current,
 };
}
источник

TS

Terry Sahaidak in React Kyiv
така собі примітивна реалізація
источник

D

Dmytraw in React Kyiv
GNU/Vsevolod.rs
Компонент приблизительно такой
() => {
 const div = useRef()
 useEffect(() => {
   if (dov.current && !captcha.alreadyRendered)
     recaptcha.render('captcha-div')
 }
 return (
   <>
     ...
     <div id='captcha-id' ref={div} />
   </>
 )
}
Тут написано dov.current && .... опечатка просто?
источник

SG

Stas G in React Kyiv
думаю, опечатка)
источник

G

GNU/Vsevolod.rs in React Kyiv
Dmytraw
Тут написано dov.current && .... опечатка просто?
Exactly
источник

SG

Stas G in React Kyiv
Alexey Raspopov
можно ещё тут почитать, если хочется bleeding edge
https://github.com/alexeyraspopov/react-warehouse
(есть надежда что через 3 недели это будет уже не bleeding edge)
а я правильно понял (из ридми), что твоя либа хороша именно для работы с реал-тайм данными? потому что у меня обновляются они достаточно редко
источник

YO

Yevhenii Oliinyk in React Kyiv
Добрый день. А подскажите пожалуйста, что в реакте такого применить что бы сделать общую шину экшенов? задача такова - из разных мест может вызыватся экшн который должен поменять урл. Редакс вроде не очень для этого подходит или все же можно через конект редакса и роутера?
источник

SS

Serhey Shmyg in React Kyiv
Можливо варто переосмислити задачу і не викликати єкшн що міняє урл, а зробити хелпер що змінюватиме урл? Навіщо ускладнювати?
источник

YO

Yevhenii Oliinyk in React Kyiv
вот я ж и думаю какой бы варант лучше  применить
источник

SS

Serhey Shmyg in React Kyiv
все можна провернути як описано, типу єкшен, який буде змінювати наприклад ЮІД, і при його зміні можна робити що потрібно, але навіщо так ускладнювати
источник

YO

Yevhenii Oliinyk in React Kyiv
задача - когда приходит экшн брать данные из урл, брать данные из редакса, и потом менять урл в зависимости от условий
источник