Size: a a a

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

2020 November 22

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
Dmitriy Shuleshov
Кстати это достаточно распространенная ошибка, интересно почему🤔
потому что многие просто не понимают что именно нужно тестировать в реакт приложении,
а другие не знают как
третьи вроде знают как, но не знают как правильно
источник

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
вот единственно верный путь тестирования реакта на сегодня https://testing-library.com/docs/dom-testing-library/intro/
источник

EY

Eagle Owl Yoll in React — русскоговорящее сообщество
Kaz
Всем привет! Подскажите, как можно запустить useEffect после определенного действия? В моем случае нужно сделать кнопку повторной отправки смс после окончания 60 секунд таймера. А таймер должен запускаться после нажатия на кнопку "отправить СМС"
Да юз эффект вроде и не нужен. Делаешь отдельный метод на изменение оставшегося времени, оборачиваешь в таймер и вяжешь на onClick. В юз эффекте нужно просто на анмаунте проверить, тикает ли таймер и отрубать его, чтобы утечку памяти не словить.
источник

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
все остальное это от лукавого
источник

S

Stanislav in React — русскоговорящее сообщество
🅅aleriy 🄺obzar
вот единственно верный путь тестирования реакта на сегодня https://testing-library.com/docs/dom-testing-library/intro/
утверждение что единственно верный это немного преувеличение, но в целом я с вами согласен
источник

V

Vlad in React — русскоговорящее сообщество
Kaz
Мне нужен перерендер, так как таймер меняется в кнопке
посмотри как тут сделано https://github.com/thibaultboursier/use-timer
источник

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
Stanislav
утверждение что единственно верный это немного преувеличение, но в целом я с вами согласен
ну потому что многие пытаются тестировать через enzyme, cypress и т.д.
но это все не верно изначально
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
🅅aleriy 🄺obzar
ну потому что многие пытаются тестировать через enzyme, cypress и т.д.
но это все не верно изначально
сайпрес о другом совсем же ведь
источник

S

Stanislav in React — русскоговорящее сообщество
🅅aleriy 🄺obzar
ну потому что многие пытаются тестировать через enzyme, cypress и т.д.
но это все не верно изначально
enzyme свою задачу решает, rtl это именно альтернативный подход
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
Stanislav
enzyme свою задачу решает, rtl это именно альтернативный подход
нормальную работу с хуками завезли?
источник

S

Stanislav in React — русскоговорящее сообщество
Dmitriy Shuleshov
нормальную работу с хуками завезли?
про это не в курсе, давно им не пользовался
источник

S

Stanislav in React — русскоговорящее сообщество
я к тому что это все таки разные вещи
источник

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
ну мы же про тестирование реакт компонентов сейчас говорим больше?
источник

🅅🄺

🅅aleriy 🄺obzar in React — русскоговорящее сообщество
а не про общее интеграционное тестирование интерфейса в разных браузерах
источник

K

Kaz in React — русскоговорящее сообщество
Eagle Owl Yoll
Да юз эффект вроде и не нужен. Делаешь отдельный метод на изменение оставшегося времени, оборачиваешь в таймер и вяжешь на onClick. В юз эффекте нужно просто на анмаунте проверить, тикает ли таймер и отрубать его, чтобы утечку памяти не словить.
Я так понимаю, тут классическое замыкание, каунтер в минус уходит, так как видит, что repeatCounter всегда равен 4
источник

А

Александр in React — русскоговорящее сообщество
Kaz
Всем привет! Подскажите, как можно запустить useEffect после определенного действия? В моем случае нужно сделать кнопку повторной отправки смс после окончания 60 секунд таймера. А таймер должен запускаться после нажатия на кнопку "отправить СМС"
const Component = () => {
   const [isDisabled, setIsDisabled] = useState(false);
   return (
       <button disabled={isDisabled} onClick={() => {
           setIsDisabled(true);
           setTimeout(() => setIsDisabled(false), 60000);
       }}>
   );
}
источник

K

Kaz in React — русскоговорящее сообщество
Александр
const Component = () => {
   const [isDisabled, setIsDisabled] = useState(false);
   return (
       <button disabled={isDisabled} onClick={() => {
           setIsDisabled(true);
           setTimeout(() => setIsDisabled(false), 60000);
       }}>
   );
}
Не, задача в другом. Мне не нужен новый компонент по прошествии 60 сек, мне нужно управлять таймером
источник

EY

Eagle Owl Yoll in React — русскоговорящее сообщество
Kaz
Я так понимаю, тут классическое замыкание, каунтер в минус уходит, так как видит, что repeatCounter всегда равен 4
Лучше опираться на время, и считать разницу между текущей датой и датой старта таймера, имхо. Так надёжнее в ряде случаев. Ну и интервал можно по чаще, чтобы секунды в глазах у юзера не прыгали.
источник

А

Александр in React — русскоговорящее сообщество
Kaz
Не, задача в другом. Мне не нужен новый компонент по прошествии 60 сек, мне нужно управлять таймером
Зачем?
источник

EY

Eagle Owl Yoll in React — русскоговорящее сообщество
Eagle Owl Yoll
Лучше опираться на время, и считать разницу между текущей датой и датой старта таймера, имхо. Так надёжнее в ряде случаев. Ну и интервал можно по чаще, чтобы секунды в глазах у юзера не прыгали.
источник