@react_js

Страница 4959 из 5115
Георгий
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
А у тебя классы элемента где находятся?
Что значит где находятся? Как обычно. В render я смотрю, что добавить и const classes = (this.flash?"flash":""); return <tr className={classes}>...

Andrey
06.10.2018
23:02:22
Что значит где находятся? Как обычно. В render я смотрю, что добавить и const classes = (this.flash?"flash":""); return <tr className={classes}>...
this.flash? Что это такое? Почему не хранить флаг в стейте? Логично, что если обновлять неотслеживаемые вещи, то оно не будет давать команду ререндерить компонент.

Георгий
06.10.2018
23:04:34
this.flash? Что это такое? Почему не хранить флаг в стейте? Логично, что если обновлять неотслеживаемые вещи, то оно не будет давать команду ререндерить компонент.
Потому что у меня в строке есть еще и другие значения которые надо обновлять, быстрее чем анимация отрабатывает. Потому this.flash я устанавливаю в shouldcomponentupdate, если одно, специальное значение обновляется, сигнализируя компоненту, что он должен мигнуть.

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

Не работай с dom напрямую, это не react way

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

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

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

Георгий
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
Я ж тебе написали, изначально поставь флаг isAnimated:true
Зачем изначально? У меня таблица. Переодически строки обнволяются. Любое из полей в строке может обновиться. Но только одно поле запускает анимацию "вспышки"

Может я туплю где то

Andrey
06.10.2018
23:11:42
Может я туплю где то
Вы считаете, что this.setState заменяет старый стейт?

Andrew
06.10.2018
23:11:44
Значит тогда смотри что изменилось и ставь класс там

Я не понимаю, у тебя там вебсокеты ? И по новым данным надо анимировать то что изменилось ?

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

Потому без setState

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
Зачем тебе отслеживать изменение поля? Вместо изменения поля меняй стейт.
Что мне даст изменение стейта? Я не спорю, я без году неделя в react-js. Ну допустим у меня в props пришли новые значения и надо обновиться. Причем если поменялось специальное значение, я должен запустить анимацию. Как отловить изменение и в рендере запустить эту анимацию?

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

Георгий
06.10.2018
23:19:21
getDerivedStateFromProps или что-то типа такого. Я не помню правильное название этого хука.
О!, точно, проглядел. Возможно то, что надо. Попробую. Спасибо

Ajay
07.10.2018
06:11:06


Cenator
07.10.2018
06:11:57
thedevs.network

Ajay
07.10.2018
06:12:23
thedevs.network
i tried but did not get any replies :(

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
but do you have any solution for this? bcz i am tring to resolve thiis from last 2 hours
Use const path = `${}` require(path) Templating should occur before require

Try again

Ajay
07.10.2018
06:25:21
Use const path = `${}` require(path) Templating should occur before require
you are saying to store a value in path = ${} but how my path is string it is not a variable

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
Can you tell what error do you see in the console
thanks i solved this error finally :) i need to import everytime that images

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 })) }

Андрей
07.10.2018
08:22:18
for (let i = 0; i <= 1400; i++) { this.setState((state) => ({ num: state.num + 1 })) }
из-за асинхронности setState будет плавно увеличиваться или поч?

Cenator
07.10.2018
08:23:29
из-за асинхронности setState будет плавно увеличиваться или поч?
Не знаю, если недостаточно плавно то можно обернуть в таймаут

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
Хорошо, спасибо, почитаю

когда ты написал, что при 1400 числе работать очень медленно, первое что пришло на ум - создается куча таймеров
Он идет до 1000 быстро, а потом медленее, чем ближе к числу тем медленее обновляется

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
Да, код так себе понимаю

Страница 4959 из 5115