Size: a a a

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

2020 November 06

V

Vetro in React — русскоговорящее сообщество
valeriy goloshchapov
коллеги, очередной нубский вопрос про useEffect и setInterval
кнопка с обратным отсчетом, useEffect требует переменную timer в зависимости и выполняется с каждым рендером, а хотелось бы только один раз.
как такое принято делать?
https://codesandbox.io/s/restless-moon-mh60l
  useEffect(() => {
   console.log("effect");
   const timerInterval = setInterval(() => {
     setTimer((timer) => {
       if (timer === 0) {
         setVisible(false);
         return 0;
       } else {
         return timer - 1;
       }
     });
   }, 1000);
   return () => {
     clearInterval(timerInterval);
   };
 }, [setVisible]);
источник

vg

valeriy goloshchapov in React — русскоговорящее сообщество
Vetro
  useEffect(() => {
   console.log("effect");
   const timerInterval = setInterval(() => {
     setTimer((timer) => {
       if (timer === 0) {
         setVisible(false);
         return 0;
       } else {
         return timer - 1;
       }
     });
   }, 1000);
   return () => {
     clearInterval(timerInterval);
   };
 }, [setVisible]);
гениально! :)
источник

vg

valeriy goloshchapov in React — русскоговорящее сообщество
это какой-то типовой прием в реакте?
источник

vg

valeriy goloshchapov in React — русскоговорящее сообщество
или, скорее, типовой костыль? :)
источник

@

@xtx in React — русскоговорящее сообщество
Pan Włodzimierz
гениально)))
а в понимании страницы сайта?
типа что, как
не совсем понимаю
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
valeriy goloshchapov
коллеги, очередной нубский вопрос про useEffect и setInterval
кнопка с обратным отсчетом, useEffect требует переменную timer в зависимости и выполняется с каждым рендером, а хотелось бы только один раз.
как такое принято делать?
https://codesandbox.io/s/restless-moon-mh60l
убрать из зависимостей🤷‍♂️
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
Vetro
  useEffect(() => {
   console.log("effect");
   const timerInterval = setInterval(() => {
     setTimer((timer) => {
       if (timer === 0) {
         setVisible(false);
         return 0;
       } else {
         return timer - 1;
       }
     });
   }, 1000);
   return () => {
     clearInterval(timerInterval);
   };
 }, [setVisible]);
return () => ... , когда эта функция будет выполнена?
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
анмаунт
источник

V

Vetro in React — русскоговорящее сообщество
Pan Włodzimierz
return () => ... , когда эта функция будет выполнена?
при анмаунте же
источник

vg

valeriy goloshchapov in React — русскоговорящее сообщество
опа, дэн абрамов стал китайцем?
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
что-то я не могу найти инфу о didUnmount, только willUnmount есть
источник

vg

valeriy goloshchapov in React — русскоговорящее сообщество
я видел ту статью, но там не было проверок внутри эффекта
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
источник

@

@xtx in React — русскоговорящее сообщество
Pan Włodzimierz
что-то я не могу найти инфу о didUnmount, только willUnmount есть
а надо было всего лишь прочитать и ткрунь нужную ссылку https://ru.reactjs.org/docs/react-component.html#componentdidmount
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
это didMount, а я ищу по did UN mount
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
видимо такого нет))
источник

V

Vetro in React — русскоговорящее сообщество
Pan Włodzimierz
видимо такого нет))
А как ты вызовешь этот метод когда инстанса уже не существует ( по семантическим ожиданиям )?
источник

DS

Dmitriy Shuleshov in React — русскоговорящее сообщество
valeriy goloshchapov
опа, дэн абрамов стал китайцем?
это китайская подделка))
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
Vetro
А как ты вызовешь этот метод когда инстанса уже не существует ( по семантическим ожиданиям )?
нет, ну мао ли
источник

PW

Pan Włodzimierz in React — русскоговорящее сообщество
кто знает как они там сделали
источник