
Danil
19.10.2018
14:56:06
У меня в проекте вызывается сетстейт на каждую секунду через интервал. Можно ли сделать так, чтобы значение стейта я получал, а компонент не перерисовывался

Bogdan
19.10.2018
14:57:42

Danil
19.10.2018
14:58:49
зачем сетить стейт тогда?
Мне надо получать текущее время и если оно прошло определенную отметку, то выполнится функция. Например у меня запланировано действие на 19:50, если наступило 19:50, то покажется модальное окно
Я другое решение не придумал, чем сетить каждую секунду

Google

Bogdan
19.10.2018
15:00:01

Danil
19.10.2018
15:00:30
Не понял

Bogdan
19.10.2018
15:01:17
ты прямо в рендере проверяешь выполнение условия для времени?

Danil
19.10.2018
15:04:54
componentDidMount() {
this.timer = setInterval(this.checkCurrentTime, 1000)
}
shouldComponentUpdate(props, state) {
if (state.currentTime !== this.state.currentTime) {
this.updateStatus(this.state.currentTime)
return false
}
return true
}
componentWillUnmount() {
clearInterval(this.timer)
}
Это нормально, что я в sCU функцию вызвал?
checkCurrentTime = () => {
this.setState({
currentTime: new Date(),
})
}

Тимофей
19.10.2018
15:06:20

Danil
19.10.2018
15:06:34
А как получать текущее время?

Тимофей
19.10.2018
15:07:05

Danil
19.10.2018
15:08:18
Текущее системы. Кейс такой. Есть действие которое должно выполниться в 21:00 например, если я в 20:00 ушел от компа, а в 21:00 подошел, то у меня должна модалка открыться

Oleg
19.10.2018
15:09:46

Danil
19.10.2018
15:10:00
он один раз вызывается

Тимофей
19.10.2018
15:10:01

Google

Danil
19.10.2018
15:10:39
Кароч типа крона на бэкэнде. Выполнение события в определенное время

Oleg
19.10.2018
15:10:42

Danil
19.10.2018
15:10:57
Стейт в интервале каждую секунду сетится
тем самым я в стейте всегда вижу текущее время

Egor
19.10.2018
15:12:12

Danil
19.10.2018
15:12:58
Это сильно сложнее. Я решил задачу, но не знаю корректно ли, ререндеров лишних нет
Сейчас гист скину
https://gist.github.com/shashkovdanil/b00759a34457aa88d35f2679c039e382
Еще раз уточню, что задача выполняется корректно и лишних ререндеров каждую секунду нет

Egor
19.10.2018
15:17:27

М
19.10.2018
15:17:34
ребят, а прокидывание пропсов из родителя в компоненты уровнем ниже влечет потерю производительности?
ну то есть я могу:
1) в одном большом компоненте получить все нужные данные и сразу их отрисовать
2) в одном компоненте-родителе получить все нужные данные и прокинуть их в несколько компонентов-чайлдов, где уже отрисовать
3) получить и отрисовать данные в компонентах-чайлдах. а в компоненте-родителе только скопмпоновать чайлды
как лучше сделать?

Danil
19.10.2018
15:18:05

Тимофей
19.10.2018
15:18:08

М
19.10.2018
15:18:16
давно задаюсь этим вопросом, если честно, но ток щас решил спросить

Egor
19.10.2018
15:19:22

Тимофей
19.10.2018
15:20:14

Andrew
19.10.2018
15:23:32
Коллеги, простите, пож-ста. Нужна либа для того, чтобы я мог написать несколько правил CSS (в духе styled, но без селектора) в templated function типа:
const style = css`
background-color: #123456;
`;
и чтобы затем этот style можно прямиком в проп style элемента вставлять.
Возможно, я что-то не учитываю, но ничего более вразумительного, чем css2obj я не нагуглил.

М
19.10.2018
15:23:54

Artyom
19.10.2018
15:31:35
Воу
https://reactarmory.com/answers/how-can-i-use-css-in-js-securely

Google

Artyom
19.10.2018
15:37:53
А где запись?
https://pitercss.ru/16/pres/css-in-js/

Agent K
19.10.2018
15:38:36
господа, подскажите пожалуйста, каким образом лучше всего внедрить прелоад компонент для списка (аналог слака, фейсбука, когда при первой загрузке видишь пустые поля)?
данные сейчас берутся из redux-store, в нем есть entites и флаг isFetching, обновляются экшенами, которые в свою очередь отправляют запросы в бэк.
попробовал react-loadable, но судя по всему это не про мой случай (его вешают на промис, либо создают фейк делей, на время обновления стейта)
планирую сделать руками подстановку нужного компонента по обновлению redux store, но встают вопросы, где лучше проверять флаг (внутри компонента или вне) и куда в таком случае закидывать initial экшены, которые подгружают контент на старте апки (сейчас componenDidMount вызывает экшен на подругрузку данных в себя)
спасибо )

Mikhail
19.10.2018
16:02:35
А есть хорошие подсветки синтаксиса для postcss?

Danil
19.10.2018
16:09:05
Как лучше вызывать коллбэк после успешного реквеста, который выполнен через thunk (componentWillReceiveProps не хочу юзать)
Кейс такой: открылась модалка с текстареа, веели текст, нажали сохранить, ушел запрос, пришел 200 ответ, далее надо закрыть модалку

Cenator
19.10.2018
16:10:36

Danil
19.10.2018
16:10:50
?

Cenator
19.10.2018
16:11:53
?
ноооо лучше стейт модалки тоже хранить в редуксе и диспатчить закрытие в самом санке

Alex
19.10.2018
16:16:22

Mikhail
19.10.2018
16:19:50
Для чего именно?
Для vscode.
После sass кажется что половина кода не подсвечивается, хотя подключил postcss-syntax и нормально его настроил

Alex
19.10.2018
16:20:25

Георгий
19.10.2018
16:20:38
Привет, у меня есть приложение. С browserrouter, которое лежит на сервере в папке api1/
<BrowserRouter basename={'api1'}>
<Switch>
<Route path="/api/:api_name/:method_name" component={(props) => <Method {...props} />}/>
</Switch>
</BrowserRouter>,Собственно это просмотрщик api. Для родственного api, форка первого, я скопировал приложение, тоже форкнул, поправиль кое чего в исходниках и положил в папку "api2".
Проблема сейчас в том, что навигация не работает толком. Не пойму из-за чего. Либо работает api1 либо api2. Если почистить все в localstorage и куки, то начинает работать другое api. Видимо BrowserRouter использует одно и тоже histrory, сайт то один. Но не пойму, как с этим бороться.

Alex
19.10.2018
16:20:52
То есть подсветка для sass нужна. А вообще @vscode_ru

Mikhail
19.10.2018
16:26:56

Ilya
19.10.2018
16:46:52
здоров типы
подскажите компонент есть ли такой подобный для кнопки

Георгий
19.10.2018
16:47:19
Привет, у меня есть приложение. С browserrouter, которое лежит на сервере в папке api1/
<BrowserRouter basename={'api1'}>
<Switch>
<Route path="/api/:api_name/:method_name" component={(props) => <Method {...props} />}/>
</Switch>
</BrowserRouter>,Собственно это просмотрщик api. Для родственного api, форка первого, я скопировал приложение, тоже форкнул, поправиль кое чего в исходниках и положил в папку "api2".
Проблема сейчас в том, что навигация не работает толком. Не пойму из-за чего. Либо работает api1 либо api2. Если почистить все в localstorage и куки, то начинает работать другое api. Видимо BrowserRouter использует одно и тоже histrory, сайт то один. Но не пойму, как с этим бороться.
Сам себе и ответил. Создал history, с указанием basename и вроде бы заработало

Ilya
19.10.2018
16:48:00
типа свич-кнопка

М
19.10.2018
16:49:15
типа свич-кнопка
ну гугл react toggle / switch button, там их точно много. другое дело что навряд ли это нужно брать готовым

Google

М
19.10.2018
16:55:03
как называтся подгрузка элементов только при появлении в активной области скрола? но это не пагинация, так как полоса прокрутки неподгруженные элементы "видит", то есть они уже есть

Admin
ERROR: S client not available

Default
19.10.2018
16:57:30
Виртуализация

Николай
19.10.2018
16:58:10
Есть кстати доя реакта что-нибудь, для автоматизации этой фигни?

Default
19.10.2018
16:59:17

Николай
19.10.2018
16:59:28

Default
19.10.2018
16:59:45

М
19.10.2018
17:01:18
https://github.com/bvaughn/react-virtualized
В итоге, конечное решение выглядит примерно так:
1. Описываем контейнер элементов. Контейнер внешне должен быть ограниченной высоты и ширины.
2. Подписываемся на события скроллинга внутри контейнера и пересчитываем видимые элементы.
3. Вместо невидимых элементов мы можем отрисовать пустое пространство. К примеру, через свойства margin/padding. Ни в коем случае не делайте через создание блока и изменение его размеров, иначе косяков не оберетесь.
4. Отрисовываем видимые элементы.
эта близко к правде или уже сильно устарело?

Artyom
19.10.2018
17:02:19
Не помню...

М
19.10.2018
17:03:36
ну вот тут все подробно описано, я для своих целей виртуализацию могу спокойно сам написать. другое дело, что непонятно, насколько актуально написанное тут
https://medium.com/@viktorlove/ui-virtualization-9eeaab896913

Default
19.10.2018
17:04:54
Все есть
Нет, нету. Лейзи лоадинг это когда у тебя 1000 элементов списка, а ты показываешь только 20 и подгружаешь по мере необходимости. Как бесконечный скролл в твиттере. А виртуализация это именно что отображение только тех элементов, что видны в данный момент на экране, при том подгружать данные для них ты можешь когда тебе это будет удобно
И это работает в обе стороны, те элементы, которые были загружены, но не видны в данный момент на экране тоже лучше выкидывать, иначе получится как в веб версии coub или в переписке вк, когда спустя пару минут скроллинга сжирается вся память и страничка начинает лагать

Николай
19.10.2018
17:06:43
Щитопделать

М
19.10.2018
17:08:56
ребят, а я правильно понимаю, что в идеально оптимищированном приложении sCU должен быть в каждом компоненте?
и получается, что в статических компонентах, которые не зависят от данных, я просто пишу в sCU false
или я хуйню несу?

Николай
19.10.2018
17:11:42
Я не знаю, что такое sCU

Google

Anton
19.10.2018
17:11:53
pure components

Николай
19.10.2018
17:12:02
А

М
19.10.2018
17:13:24
я просто про оптимизацию вроде начитался, но на практике чет хз что она за зверь

Николай
19.10.2018
17:15:01
Хз нужно ли оно вообще

Vadim
19.10.2018
17:15:48

М
19.10.2018
17:16:14

Николай
19.10.2018
17:17:37

М
19.10.2018
17:17:54

Artyom
19.10.2018
17:18:54
#пятничная_задачка
Что будет в каждом из случаев?
http://s.csssr.ru/U8SMMLH99/20181019201737.png