Size: a a a

2019 August 09

AR

Alexey Raspopov in React Kyiv
Kostya B
export const useGiphyService = limit => {
 const [state, dispatch] = useReducer(gifsReducer, initialState);

 const fetch = useCallback(
   async (query, offset = 0, isIncremental = false) => {
     if (!query) {
       return dispatch({
         type: FETCH_NEW_GIFS_SUCCESS,
         data: [],
         isLastPage: true
       });
     }

     dispatch({
       type: isIncremental ? FETCH_MORE_GIFS_REQUEST : FETCH_NEW_GIFS_REQUEST
     });

     try {
       const {
         data,
         pagination: { total_count, offset: newOffset, count }
       } = await searchGifs({ query, limit, offset });

       const isLastPage = total_count - newOffset <= count;

       dispatch({
         type: isIncremental
           ? FETCH_MORE_GIFS_SUCCESS
           : FETCH_NEW_GIFS_SUCCESS,
         data,
         isLastPage
       });
     } catch {
       dispatch({
         type: isIncremental ? FETCH_MORE_GIFS_FAILURE : FETCH_NEW_GIFS_FAILURE
       });
     }
   },
   [limit]
 );

 return { state, fetch };
};
Если у тебя в результате хука получается (значение, функция) лучше тоже возвращать пару через массив, вместо объекта
источник

KB

Kostya B in React Kyiv
Alexey Raspopov
Если у тебя в результате хука получается (значение, функция) лучше тоже возвращать пару через массив, вместо объекта
спасибо, учту
источник

KB

Kostya B in React Kyiv
@alexeyraspopov как кстати с тестированием хуков?
источник

SS

Serhey Shmyg in React Kyiv
Alexey Raspopov
Если у тебя в результате хука получается (значение, функция) лучше тоже возвращать пару через массив, вместо объекта
Чим це краще?
источник

SS

Serhey Shmyg in React Kyiv
Одни краще явно через обєкт іншим через масив. Діло смаку імхо.
источник

AR

Alexey Raspopov in React Kyiv
Kostya B
@alexeyraspopov как кстати с тестированием хуков?
Кастомные хуки я просто мокаю
источник

KB

Kostya B in React Kyiv
а тест для самого хука не пишешь?
источник

SG

Stas G in React Kyiv
Serhey Shmyg
Одни краще явно через обєкт іншим через масив. Діло смаку імхо.
думаю, для консистентности с родными хуками
источник

AR

Alexey Raspopov in React Kyiv
Serhey Shmyg
Одни краще явно через обєкт іншим через масив. Діло смаку імхо.
Свойства, которые дает массив — свои, локальные именования переменных
источник

AR

Alexey Raspopov in React Kyiv
Kostya B
а тест для самого хука не пишешь?
Хз, они обычно у меня достаточно маленькие, чтобы в них что-то ломать)
источник

AR

Alexey Raspopov in React Kyiv
Stas G
думаю, для консистентности с родными хуками
И это тоже
источник

KB

Kostya B in React Kyiv
а еще вопрос, всегда ли следуете react-hooks/exhaustive-deps правилу еслинт?
источник

AR

Alexey Raspopov in React Kyiv
Да
источник

KB

Kostya B in React Kyiv
нормально ли намеренно не добавлять туда какойто аргумент?
источник

KB

Kostya B in React Kyiv
я имею ввиду в массив
источник

AR

Alexey Raspopov in React Kyiv
У тебя должна быть очень жоская аргументация)
источник

TS

Terry Sahaidak in React Kyiv
Kostya B
нормальные это какие?
глянь на redux-actions)
источник

KB

Kostya B in React Kyiv
Alexey Raspopov
У тебя должна быть очень жоская аргументация)
ну к примеру если функцию туда добавлять то ее приходится оборачивать в useMemo/Callback
источник

KB

Kostya B in React Kyiv
Terry Sahaidak
глянь на redux-actions)
ты имеешь ввиду екш криейторы?
источник

SG

Stas G in React Kyiv
а почему бы не обернуть?
источник