Size: a a a

React — русскоговорящее сообщество

2021 February 08

В

Вадим in React — русскоговорящее сообщество
Кирилл
прочитай про useCallback в общем, ты не прав
да и собственно вопрос не в этом
источник

К

Кирилл in React — русскоговорящее сообщество
Вадим
в чем я ошибаюсь?
я написал выше, почитай доку теперь)
источник

К

Кирилл in React — русскоговорящее сообщество
Вадим
да и собственно вопрос не в этом
на будущее
источник

О

Олег in React — русскоговорящее сообщество
Roman Usherenko
ты нетворк мокаешь? внутри санки, если там делается реальный реквест на бек, то он может не успевать завершиться
как всё сложно то) мокаю axios.
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Олег
как всё сложно то) мокаю axios.
ну тогда возможн ты "не то мокаешь" ну то есть кнопка может действительно не появляется
источник

О

Олег in React — русскоговорящее сообщество
Roman Usherenko
ну тогда возможн ты "не то мокаешь" ну то есть кнопка может действительно не появляется
ок. спасибо. в принципе помог понять лучше
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Олег
ок. спасибо. в принципе помог понять лучше
в целом идеология rtl - делай проверки на то, что видит пользователь, а не на то, как у тебя реализован компонент
источник

О

Олег in React — русскоговорящее сообщество
Roman Usherenko
ну тогда возможн ты "не то мокаешь" ну то есть кнопка может действительно не появляется
тогда зачем в примерах RTL показывают мок бэка через msw если в этом всё равно нет смысла?
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Олег
тогда зачем в примерах RTL показывают мок бэка через msw если в этом всё равно нет смысла?
чотакое msw?
источник

В

Вадим in React — русскоговорящее сообщество
Кирилл
так ты на каждый rerender вызываешь useCallback и создаешь новую ссылку
не создаю каждый раз новую - на самом деле в реальном коде там есть зависимости
источник

О

Олег in React — русскоговорящее сообщество
Roman Usherenko
чотакое msw?
источник

К

Кирилл in React — русскоговорящее сообщество
Вадим
не создаю каждый раз новую - на самом деле в реальном коде там есть зависимости
зависимости не освобождают от пересоздания, другое дело useEffect
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Олег
тогда зачем в примерах RTL показывают мок бэка через msw если в этом всё равно нет смысла?
какие-то странные экзамплы если честно. Кент всегда говорил "юзайте findBy", даже линтер есть, чтоб не писали waitFor(getBy
источник

О

Олег in React — русскоговорящее сообщество
Roman Usherenko
какие-то странные экзамплы если честно. Кент всегда говорил "юзайте findBy", даже линтер есть, чтоб не писали waitFor(getBy
понял. спасибо Роман
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Олег
понял. спасибо Роман
но в целом относительно мокания все ок

если у тебя чтото не сходится - развешивай console.log: в санке до и после вызова, в компоненте на ререндер и в тестах screen.debug()
источник

В

Вадим in React — русскоговорящее сообщество
Тимофей 🛴
В @ts_cool

Вообще там есть отдельный тип MutableRef
👍
источник

В

Вадим in React — русскоговорящее сообщество
Кирилл
так ты на каждый rerender вызываешь useCallback и создаешь новую ссылку
"Как работает useCallback hook?

Этот hook возвращает закешированную функцию (то есть ссылка не изменяется от рендера к рендеру).
Помимо функции, которую нужно кешировать, в нее передан второй аргумент — пустой массив.
Этот массив позволяет передать список полей, при изменении которых необходимо изменить функцию, т.е. вернуть новую ссылку."
источник

К

Кирилл in React — русскоговорящее сообщество
Вадим
"Как работает useCallback hook?

Этот hook возвращает закешированную функцию (то есть ссылка не изменяется от рендера к рендеру).
Помимо функции, которую нужно кешировать, в нее передан второй аргумент — пустой массив.
Этот массив позволяет передать список полей, при изменении которых необходимо изменить функцию, т.е. вернуть новую ссылку."
это же не дока
источник

В

Вадим in React — русскоговорящее сообщество
Кирилл
это же не дока
useCallback
const memoizedCallback = useCallback(
 () => {
   doSomething(a, b);
 },
 [a, b],
);
Возвращает мемоизированный колбэк.
источник

К

Кирилл in React — русскоговорящее сообщество
Вадим
useCallback
const memoizedCallback = useCallback(
 () => {
   doSomething(a, b);
 },
 [a, b],
);
Возвращает мемоизированный колбэк.
Это полезно при передаче колбэков оптимизированным дочерним компонентам, которые полагаются на равенство ссылок для предотвращения ненужных рендеров (например, shouldComponentUpdate).
источник