
Георгий
06.10.2018
22:04:33
ОК, попробую с transitionend
Спасибо
Добавил компоненту в componentDidMount event listener на событие "animationend". Что бы удалял у елемента class
element.className = ""
Проде бы срабатывает, в инспекторе видно, что у tr со временем пропадает класс "flash". Но почему то потом, при обновлении компонета, class flash больше не добавляется. Не пойму, может я неверно удаляю класс или как заставить компонент обновить className?
Заменил element.className = "" на this.forceUpdate() и все заработало вроде как надо

Google

Andrey
06.10.2018
22:54:08
А у тебя классы элемента где находятся?
this.forceUpdate - признак хренового кода.

Георгий
06.10.2018
23:01:35

Andrey
06.10.2018
23:02:22

Георгий
06.10.2018
23:04:34

Andrew
06.10.2018
23:04:40
На cDM запускаешь таймер, потом уберешь флаг из стейта и все
Не работай с dom напрямую, это не react way

Andrey
06.10.2018
23:05:36

Kelin
06.10.2018
23:06:45
Ночь велосипедов

Георгий
06.10.2018
23:06:55
Если его положить в стейт, то может флаг раньше сброситься, чем анимация отработает

Kelin
06.10.2018
23:07:01
Патчить дом руками, еще и в scu, кек

Andrey
06.10.2018
23:07:13

Георгий
06.10.2018
23:07:58

Google

Георгий
06.10.2018
23:08:27

Andrey
06.10.2018
23:08:33

Andrew
06.10.2018
23:08:37
Потом на cDM запусти таймер и убери флаг

Andrey
06.10.2018
23:09:14
А флаг можно инициализировать там где инициализируется стейт - в конструкторе.

Георгий
06.10.2018
23:10:41
Может я туплю где то

Andrey
06.10.2018
23:11:42

Andrew
06.10.2018
23:11:44
Значит тогда смотри что изменилось и ставь класс там
Я не понимаю, у тебя там вебсокеты ? И по новым данным надо анимировать то что изменилось ?

Георгий
06.10.2018
23:13:24
Так я так и делаю. Смотрю в componentShouldUpdate и там выставляю флаг. Я просто другого подходящего места не найду, где я бы мог бы отловить факт изменения поля и вызвать setState
Потому без setState

Andrew
06.10.2018
23:14:01

Andrey
06.10.2018
23:14:13
Я бы сделал фукнцию runAnimation корую прокидывал бы туда, куда надо.

Георгий
06.10.2018
23:14:57

Andrey
06.10.2018
23:16:24
А таймеры вам никакие не нужны, так как есть onAnimationEnd, который вызывается при окончании css анимации.

Георгий
06.10.2018
23:17:01

Andrew
06.10.2018
23:17:11

Google

Георгий
06.10.2018
23:17:17
Я просто спрашиваю как правильно это сделать. Дайте мне пример и все

Andrey
06.10.2018
23:17:56

Георгий
06.10.2018
23:19:21

Ajay
07.10.2018
06:11:06

Cenator
07.10.2018
06:11:57
thedevs.network

Ajay
07.10.2018
06:12:23

Cenator
07.10.2018
06:12:36

Ajay
07.10.2018
06:12:44
okay sorry
but do you have any solution for this? bcz i am tring to resolve thiis from last 2 hours

Cenator
07.10.2018
06:15:22
Try again

Ajay
07.10.2018
06:25:21

Pauline
07.10.2018
06:32:59

Ajay
07.10.2018
06:43:42

Pauline
07.10.2018
07:17:47
not working
Can you tell what error do you see in the console

Admin
ERROR: S client not available

Ajay
07.10.2018
07:18:13

Kam
07.10.2018
07:30:45
ребят дайте плиз ссылку на RN чат

Pauline
07.10.2018
07:42:40

Google

Pauline
07.10.2018
07:42:56
@reactnative_ru

Kam
07.10.2018
07:47:53
спасибо

Ruslan
07.10.2018
08:17:00
Всем привет! Доводилось ли кому писать плавное изменение числа (например от 100 до 1400)?Чтобы при этому был виден процесс увеличения или уменьшения числа

Cenator
07.10.2018
08:19:54
for (let i = 0; i <= 1400; i++) {
this.setState((state) => ({
num: state.num + 1
}))
}

Van
07.10.2018
08:20:45

Андрей
07.10.2018
08:22:18

Cenator
07.10.2018
08:23:29

Ruslan
07.10.2018
08:25:09
Не знаю, если недостаточно плавно то можно обернуть в таймаут
let start = new Date().getTime();
setTimeout( () => {
let now = (new Date().getTime()) - start;
let progress = now / 3000;
let result = Math.floor((this.state.to - this.state.from) * progress + this.state.from);
let element = progress < 1 ? result : this.state.to;
this.setState({from: element})
if (progress < 1) setTimeout(this.numberUpdate(), 10);
}, 10);
делаю так, и вроде все идет нормально, если задавать число до 1400 например, но при приближении к числу числа меняются очень медленно

Cenator
07.10.2018
08:26:34
Очевидно что 1300*10 это 13 секунд

? ethorz
07.10.2018
08:27:19
сколько у тебя таймеров в итоге получается навешано?

Ruslan
07.10.2018
08:27:59
Получается два

? ethorz
07.10.2018
08:28:19
почему два?
ты не используешь clearTimeout
в каждой итерации создается 2 новых таймера
когда ты написал, что при 1400 числе работать очень медленно, первое что пришло на ум - создается куча таймеров
почитай про call stack

Ruslan
07.10.2018
08:30:19
Хорошо, спасибо, почитаю

Cenator
07.10.2018
08:31:40
Делай через промежутки

? ethorz
07.10.2018
08:31:54
я не понимаю кейс, мне не нравится этот код. Прости

Google

? ethorz
07.10.2018
08:32:35
плохой подход как по мне

Ruslan
07.10.2018
08:32:55
Да, код так себе понимаю