
Amon Bower
15.02.2017
10:29:59
Как в React сделать Layout систему? Есть у кого-нибудь ссылка (не гугл), я уже пошарил

Сергей
15.02.2017
10:33:27
для JSS тоже думаю найдется
если CSS-modules то можешь скопипастить откуда нить
или заюзать обычный CSS-грид

Google

qap
15.02.2017
10:35:17
Всем привет. Вопрос по react-router (v4 alpha). Пытаюсь из этого примера https://reacttraining.com/react-router/examples/auth-workflow переделать const PrivateRoute = ({ component, ...rest }) ... в компонент. Вопрос: как получить ...rest ?
component вроде получаю через props.component а как ...rest?

Сергей
15.02.2017
10:36:28

qap
15.02.2017
10:36:36
нет

Сергей
15.02.2017
10:36:47
прочитай, тогда поймешь
... в объекте имеет свой смысл

qap
15.02.2017
10:37:17
спасибо!

Сергей
15.02.2017
10:38:09
условно, эти выражения равны

Дмитрий
15.02.2017
10:43:14

Сергей
15.02.2017
10:43:52
получше, но мне кажется на React.createElement это выглядело бы лучше

Дмитрий
15.02.2017
10:43:58
Соответственно без логики можно просто писать
const Chevron = applyStyles(() =>
<i styleName='chevron-icon' />
)

Сергей
15.02.2017
10:44:51
вот в этом примере JSX портит код немного

Google

Сергей
15.02.2017
10:44:53
ща покажу

Дмитрий
15.02.2017
10:45:30
Ну тут компонент очевидно не фонтан, это что первое в качестве примера попалось

Сергей
15.02.2017
10:47:25

Дмитрий
15.02.2017
10:49:08
Тут возможно да, так лучше)

Сергей
15.02.2017
10:49:40
можешь показать applyStyles?

Дмитрий
15.02.2017
10:54:48
Не, camelCase в css не стоит)
import CSSModules from 'react-css-modules'
export const fixedCSSModules =
(styles: Object, options?: CssOptions) =>
(Comp) =>
CSSModules(Comp, styles, options)
// обертка над react-css-modules, короче
...
import {fixedCSSModules} from '../../utils'
import styles from './dropdown-plus.module.less'
const applyStyles = fixedCSSModules(styles)
Это короче способ ссылаться на css modules классы просто текстом, без className={styles['very-uncomfortable']}

Сергей
15.02.2017
10:58:33
я че-то подумал, ты jss юзаешь

Дмитрий
15.02.2017
10:59:05
Я так и понял)) Юзаю, но только когда это требуется
Я себя чувствую ортодоксом ? Но реально, учитывая приёмы выше, для jss остаётся довольно небольшая доля кейсов

Сергей
15.02.2017
11:02:55

Дмитрий
15.02.2017
11:04:43
Ну стандартно, когда есть прямая связь данных из js и стилей. Параметрические цвета, размеры, ссылки, вот это всё
А вот просто логику / паттерн-матчинг уже можно делать просто оперируя строками стилей в classNames

Сергей
15.02.2017
11:06:40
можешь ещё одну функцию кинуть? fixedCSSModules

Дмитрий
15.02.2017
11:07:00

Сергей
15.02.2017
11:07:12
а блин

Дмитрий
15.02.2017
11:07:25
просто curry с переносом первого параметра вперед)
Причём до этого я слышал не айс отзывы о react-css-modules, но оказалось, что вполне ок

Google

Сергей
15.02.2017
11:09:34
он на лету css компилит?
или в вебпаке сначала css лоадер

Дмитрий
15.02.2017
11:10:31
Второе
Это по сути хелпер для ассоциаци значений (названий классов) с объектом (import style from 'style.css') и присвоения результата в className

Сергей
15.02.2017
11:13:09
где-то уже видел такое
он проходит по child'ам?

Дмитрий
15.02.2017
11:13:40
Увы, нет

Сергей
15.02.2017
11:13:54
но у тебя там styleName же

Дмитрий
15.02.2017
11:16:57
Всё, что напрямую написано в этом компоненте — транспилируется, но в дочерние компоненты не залезет
Можно по другому делать, если внутри такого компонента написать например <MyButton styleName='btn' /> то в MyButton передаётся уже готовое привычное поле className

Azein
15.02.2017
11:21:59
давно кстати имею проблему с css-модулями и именами анимаций
'css-loader?&modules&importLoaders=1&localIdentName=[name]__[local]'
вот подключены, и там при задани animation-name из кейфрейма того же компонента чет не заводится

Azein
15.02.2017
11:23:57
ибо оно добавляет localIdentName как анимациям и из за этого все плохо. в хроме можно задавать имя анимации строково типа 'Component__animationName', в лисе так не выйдет
в issues на гитхабе единственный разумный выход - вынести анимации в отдельный css который не связан с модулями, ничего лучше не нашел

Alexey
15.02.2017
11:24:53
печально..

Azein
15.02.2017
11:25:35
ну возможно я прост криво настраиваю но вроде видел немало похожих кейсов от чуваков

Sergei
15.02.2017
11:25:53
Всем привет! У меня тут кретинский вопрос весьма! Возможноли на реакте сделать бота в тг? Спасибо!

Alexey
15.02.2017
11:26:30
да
только реакт это реакт
а бот это бот

Google

Дмитрий
15.02.2017
11:27:11
?

Sergei
15.02.2017
11:27:15
Ну связка 1с реакт Тг в приницпе вомзожна. Да, по стуи ТГ бот-это фронт
Правильно все понимаю?

Дмитрий
15.02.2017
11:27:28
Вообще идея сумасшедшая конечно))

Sergei
15.02.2017
11:27:35
Я просто не разраб, а сейчас вот надо бы совсеми иэтими делами разобраться)

Dmitry
15.02.2017
11:27:38
нет. неправильно

Дмитрий
15.02.2017
11:27:39
Я про рендеринг интерфейса бота реактом))

Admin
ERROR: S client not available

Dmitry
15.02.2017
11:27:50
потому что тг-боты пишутся сервер-сайд https://core.telegram.org/bots/samples
а реакт это фреймворк для рендера клиент-сайд
и эти две вещи друг с другом вообще никак не пересекаются

Sergei
15.02.2017
11:28:21

Сергей
15.02.2017
11:28:28

pepsi ¯\_(ツ)_/¯
15.02.2017
11:29:58
только рендерить нечем, хе-хе
вот наркоманы: https://github.com/keithpops/jeoparty
вот еще, музыку можно на реакте писать https://github.com/FormidableLabs/react-music

Олег
15.02.2017
11:34:54

Дмитрий
15.02.2017
11:35:10

Sergei
15.02.2017
11:35:30

Google

pepsi ¯\_(ツ)_/¯
15.02.2017
11:38:38

Дмитрий
15.02.2017
11:39:37
Я давно на досуге размышляю, какая реализация интерфейса / модели данных годится для музыкального софта. Прихожу к выводу, что на реакте пока сложновато будет

pepsi ¯\_(ツ)_/¯
15.02.2017
11:40:30
думаю, ты прав

Дмитрий
15.02.2017
11:42:35
Жду пока придумают подход, в котором будет ещё меньше бойлерплейта) Как по интерфейсу, так и по модели данных

Dmitriy
15.02.2017
11:42:57
Promise.prototype.then всегда через event loop работает?
const promise = new Promise((resolve, reject) => {
console.log(1);
resolve();
});
console.log(2);
promise.then(() => console.log(3));
console.log(4);
1 2 4 3

Oleh
15.02.2017
14:03:57
привет всем! Есть вопрос, кто как реализовывает loader в компонентах, я в плане дублируете ли их в тех компонентах, где он нужен или это 1 глобальный, который висит в рутовом компоненте и перендерит все приложение, если его запустит или это hoc или еще что-то, кто что использует?

Dmitry
15.02.2017
14:08:41
Есть глобальный для глобальных релоадов, есть отдельные внутри компонентов, по типу всяких кнопок и подобных вещей

Oleh
15.02.2017
14:10:32
ну вот допустим лоадер для загрузки какого-то списка в компоненте, но а так же лоадер для апдейта елемента списка или создания нового или удаления
это получается разные лоадеры, ну в структуре, или один и тот же?

Dmitry
15.02.2017
14:11:31
В таком кейсе скорее всего это фейд всего списка + лоадер поверх этого фейда, пока список не обновится. Если только нет каких-то особых требований по их разделению на разные.

Oleh
15.02.2017
14:15:11
я понимаю, но как это структурно выглядит? То есть hoc или просто в компоненте стейт есть isLoading или все-таки глобально на приложение isLoading какой-то(этот вариант вообще мне не нравится, т.к. перерендер всего приложения происходит) или еще как-то
просто допустим у меня есть 5 табок и допустим какие-то еще данные в хедере или сайдбаре, которые 1 раз за приложение грузятся, с разными данными на каждом и при переключении мне нужно подгружать данные или на какой-то табке я добавляю/удаляю елемент, а внутри каждой из табок в списках, допустим, есть еще подсписки, которые можно так же менять
какого-то универсального лоадера судя по всему не выйдет, допустим hoc, я просто склоняюсь к этому, но не уверен, может еще есть варианты

Dmitriy
15.02.2017
15:01:22
есть какие-то либы упрощающие обход ast? нужно узнать содержит ли выражение переменные
не хочется свич писать на каждый тип выражения
нашел какой-то https://github.com/estools/estraverse

Vadim
15.02.2017
15:06:11
Что именно? Компилить фишки в es5?
Ну например, как указать что переменная может содержать только строку в определенном формате? Ну например строковая переменная должна содержать только числа. Или только дату в определенном строковом представлении?