@react_js

Страница 276 из 5115
Александр NeonXP⚛??
03.07.2016
09:40:01
Для php есть решения на основе пакета php-v8js для рендера. Сам скоро этим займусь в проекте.

Vitaly
03.07.2016
09:40:26
Окей чатик, можно я поделюсь своей болью... Представьте что у нас есть Users и мы хотим добавить нового. А еще мы понимаем редактируем ли мы или создаем юзера по параметру id в роуте. Представили? Продолжим - на странице юзера есть 3 табы, 2 из которых доступны только после того как мы сохраним юзера в базе и получим его id. И тут начинается веселье, в настоящий момент я делаю следующее: submitForm(data){ return handleForm(data).then(({ id }) => !data.id ? browserHistory.push(`/users/${id}?new`) || this.setState({ tab: 2 })) }и в componentWillMount проверяю наличие new в квери роута, если есть - меняю табу. И вот сегодня, жарким воскресным утром меня осенило что я делаю что-то не так, а как вы решаете эту проблему?)

Ostap
03.07.2016
10:01:59
Делаю так же. Самого очень бесит этот подход. Иногда разделяю контейнер вьюшки и тогда меньше магии в cwm

KlonD90
03.07.2016
10:09:26
Бить бэкэндеру в лицо

Google
KlonD90
03.07.2016
10:10:19
Пусть сделает генерацию идов заранее лол

Dmitry
03.07.2016
10:12:55
Эм. Я так понял там админка для создания и редактирования юзеров. Тут бэкэнд ни при чём

KlonD90
03.07.2016
10:14:07
Разве не классическая задача прокидывать связи по иду не имея ида. Имей ид :о

Vitaly
03.07.2016
10:17:04
Класическая, но создавать пустые записи в бд? Имхо это перенос костыля с фронта на бэк. В предидущим приложении я на клиенте создавал uid и мне в принципе было пофиг на бэк, но тут есть бизнес-логика.

KlonD90
03.07.2016
10:18:44
Если пг можно записи не создавать а из сиквннса число создать или взять и сделать свой генератор

Vitaly
03.07.2016
10:18:55
Вот вот, и все эти костыли помню только я(первый день после написания), а в идеале сделать код поддерживаемым и прозрачным.

KlonD90
03.07.2016
10:21:50
Все это бд

Vitaly
03.07.2016
10:26:29
Ну индексировать мы можем хоть по uid с фронта, но проблема остается таже, там нужно создать все зависимости (продукты, купоны, etc), проверить уникальность емейла... то есть в любом случае нам надо что-то отправить и что-то получить

Vladimir
03.07.2016
11:53:49
А в чем все же проблема? Нужно переходить на вторую табу только если пользак новый?

Ostap
03.07.2016
12:09:32
Можно генерировать свой ид на фронте, и назвать это оптимистичным апдейтом. А после синка, перезаписать модель с бэка

Google
from
03.07.2016
12:11:52
Не очень понятно — почему сабмит формы должен переключать вкладку вообще?

Art
03.07.2016
12:22:37
Не пойму чёт в чем проблема-то? Нет юзера, создал, отправил на сервер, тот ответил тем же объектом, но с id. А дальше <Tab active={user.id} />

Хуйня какая-то, а не проблема.

Andrey
03.07.2016
12:23:07
плюсую, так и не понял в чем серьезная проблема и где именно

anoru
03.07.2016
12:25:59
Пусть сделает генерацию идов заранее лол
Очень плохая идея. Нет ничего плохого в том, чтобы создать запись с несколькими полями, а потом отредактировать и добавить уже новые значения. Решение используется, наверное, во всех проектах

Andrey
03.07.2016
12:29:04
а так добавить внтуренние статусы юзеров, только созданный, отправленый, созданный на бэке и так далее и от этих статусов по разному обрабатывать. С помошью HoC таким юзерам ограничивать доступ к меню

Vitaly
03.07.2016
12:29:22
Как я написал выше - селектор танцует от id в параметрах роута, так что если его нет - то мы считаем что и в базенке такого нет. Без этого нам придется создавать курсоры на активного юзера. Сейчас селектор выглядит так: export default (key, entityKey = key, idKey = 'id') => selector( s => s[key], s => s.entities[entityKey], (_, { params }) => params && params[idKey], ({ ids, options, ...state }, source, id) => { const data = id ? { data: source[id] } : { collection: options && !!options.ids ? options.ids.map(identity => source[identity]) : ids.map(identity => source[identity]) }; return { ...state, ...data, options }; } );

То есть варианта 3 - писать курсоры на активного юзера, и обновлять его при изменении роута или отдельным экшеном. Или создать еще одну абстракцию которая будет выполнять роль локального представления данных на сервере и патчить ее при респонзе, в этом случае поялсяется клиентский uid и мы танцуем от него. Ну и третий - самый просто - забить)

Michael
03.07.2016
13:43:04
Konstantin
03.07.2016
14:23:21
кто-то юзал material ui components. не подскажите как в date picker выставить минимальную дату какую можно выбрать

Denis
03.07.2016
14:25:18
наконец дошли руки до material ui, импортить Editor Colors, либо еще что?

https://github.com/chicoxyzzy/webstorm-settings

тут если чо с оверрайдами, но там еще много моего всякого

@chicoxyzzy ^

anoru
03.07.2016
14:36:36
зато глаз легко отделяет от другого :D

Andrey
03.07.2016
14:39:05
и заставляет не писать jsx ))

Denis
03.07.2016
14:42:13
дополнение к no-js-plugin )

Denis
03.07.2016
14:43:32
Базовые знания всегда важны и актуальны:

Denis
03.07.2016
14:44:44
?

Andrey
03.07.2016
14:45:30
Но все быстро закончилось на HoC )

Google
Mustard
03.07.2016
14:45:44
Всем доброго вечера. Есть вопрос: Нормально ли сохранять данные в стейты напрямую (через =, а не setState()). Знаю что в документации написано капсом "НЕЛЬЗЯ", но коллега по работе говорит что можно и все пацаны так во дворе делают. Рассудите, пожалуйста

Mustard
03.07.2016
14:48:44
не нормально. Происходит вообще перерендер компонента? + setState ассихронный
Не происходит. В том то и дело, он там вообще все данные хранит, потому что: "по философии реакта, практически все влияет на перерисовку, значит практически все надо хранить в стейте. А когда мне надо вызвать перерисовку, юзаю setstate()"

Andrey
03.07.2016
14:49:57
Тогда не понятно, что он там хранит и зачем, если это не нужно показывать прямо сейчас

anoru
03.07.2016
14:54:23
Всем доброго вечера. Есть вопрос: Нормально ли сохранять данные в стейты напрямую (через =, а не setState()). Знаю что в документации написано капсом "НЕЛЬЗЯ", но коллега по работе говорит что можно и все пацаны так во дворе делают. Рассудите, пожалуйста
Пускай просто хранит в this те данные, от которых не надо перерендеривать компонент. А c setState соответственно наоборот. Его цель тогда будет достигнута. Тоже встречал одного человека, который так делал )

Mustard
03.07.2016
14:55:42
Ну не прямо сейчас, но через некоторое время подействует. Ему главное сам факт того что оно влияет на отрисовку, значит надо хранить в стейтах.

anoru
03.07.2016
14:56:22
тогда через некоторое время и надо ставить ))

Mustard
03.07.2016
14:57:14
Пускай просто хранит в this те данные, от которых не надо перерендеривать компонент. А c setState соответственно наоборот. Его цель тогда будет достигнута. Тоже встречал одного человека, который так делал )
Тоже ему так сказал, но на него это не подействовало. А жаль проект то общий( Я сам еще полностью не разобрался и хотел спросить. Почему именно нельзя напрямую сохранять, ведь работает же и правда.

anoru
03.07.2016
14:57:19
А можно какой-нибудь кейс посмотреть зачем он делает так?

Возможно он просто не хочет рефакторить код. Тогда может помочь показать мысли комьюнити из конфы, офф доки и слова третьего человека о том же

Mustard
03.07.2016
15:03:21
Видимо привык уже так или религиозные убеждения не позволяют, не знаю. Ну он уже меньше стал так делать, после того как обсудили, но все же. Мне просто стало интересно, почему именно с технической стороны так делать нельзя) на каком моменте проект сломается, если так делать

anoru
03.07.2016
15:04:35
в доках же написано

anoru
03.07.2016
15:05:04
там же где капс )

Andrey
03.07.2016
15:06:03
проект не сломается, но можно получить странное поведение компонентов и не изменения состояний )

localvoid
03.07.2016
15:32:03
сейчас открыл доку, там же всё внятно и расписано :)

Viacheslav
03.07.2016
16:08:47
@DenisIzmaylov как называется либа для реализации graphql на стороне клиента?

не могу нагуглить

Google
Viacheslav
03.07.2016
16:12:14
нашел https://github.com/relay-tools/relay-local-schema

Vladimir
03.07.2016
16:30:58
Всем привет! Посоветуйте какой-нибудь бойлерплейт для Universal App. Что-то для небольших экспериментов, с минимальной серверной частью. Если умеет с разными БД работать или вообще без них обходится то будет просто отлично. А может есть такие где CRUD из коробки?

Igor
03.07.2016
16:34:45
ну и кто-то писал, что были проблемы с запуском на проде

Viacheslav
03.07.2016
16:35:53
http://andrewhfarmer.com/starter-project/

Vitaly
03.07.2016
16:39:28
А по поводу круда из коробки https://github.com/partyrooms/web

Admin
ERROR: S client not available

Igor
03.07.2016
16:40:18
Тоже не него смотрю. Но что-то не обновлялся он давно и это смущает
https://github.com/erikras/react-redux-universal-hot-example/issues/1184 вот тут как раз это и обуждают

Vladimir
03.07.2016
16:41:16
http://andrewhfarmer.com/starter-project/
О, супер ссылка. Сейчас попробую подобрать что-то подходящее. Спасибо

Ostap
03.07.2016
17:36:21
rfx stack

Сорри что без ссылки

С теплфона

И кстати, подскажите плагин для саблайма для js-hyperlink

Как в атоме или vs code

Alexey
03.07.2016
17:42:33
кажется это goto definition называется

правда у меня нормально не получилось настроить в sublime его

Ostap
03.07.2016
17:43:08
Угу. Go to definition

Мдя. Хочу как в веб шторме, но можно как в vscode хотяб

Alexey
03.07.2016
17:46:07
можно попробовать на ternjs посмотреть

Google
Alexey
03.07.2016
17:46:12
https://packagecontrol.io/packages/TernJS

Denis
03.07.2016
19:07:33
@DenisIzmaylov как называется либа для реализации graphql на стороне клиента?
Сейчас дерну ребят, чтобы видео опубликовали с DevConf 2016 и слайды выложу вместе с видео

Хотя стоп

Видео не было

Но Лёша и Антон записывали, у Антона какое-то ЧП случилось, а запись от Охрименко у меня в облаке. Куда лучше заливать - YouTube или Vimeo?

Могу на coub

KlonD90
03.07.2016
19:27:36
YouTube

Artyom
03.07.2016
19:28:09
Vimeo

Viacheslav
03.07.2016
19:54:08
YouTube

на vimeo нет выбора скорости проигрования

Andrey
03.07.2016
20:42:41
чем плох PREACT?

Ivan
03.07.2016
20:45:12
преакт охуенен

Andrey
03.07.2016
20:47:07
охуенно то что оно с роутером и редаксом в сумме килобайт 10

и апишечка как у реакта. почти )

Ivan
03.07.2016
20:48:33
только сравни с любой сраной картинкой на любом сайте 10кб или 100 для js не суть разница

Andrey
03.07.2016
20:49:18
можно попробовать на ternjs посмотреть
оно имеет такой же юзкейс как у гоу-ту-дефинишынс?

ггы размер бандла в этой демке 7.1кб https://preact-boilerplate.surge.sh/profile семь ссаных килобайт КАРЛ

попробую в новом проекте. об ощущениях попробую отписаться)

Nikita
03.07.2016
21:28:14
не понимаю, на чем библиотеки вроде preact экономят?

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