@react_js

Страница 843 из 5115
Danil
19.01.2017
11:36:00
Меняется роутинг и форма (регистрация, авторизация)

очень зависит от приложения. если у тебя при смене табов меняется роутинг, те это основная навигация - безусловно да. а если это 1 мелкий кусок интерфейса, не вижу проблемы хранить в стейте

Nikita
19.01.2017
11:36:36
Информацию о том, какой таб открыт в данный момент норм хранить в локальном стейте компонента, но ровно до того момента, когда эта информация понадобится за пределами этого компонента
да. у меня в настройках есть табы. Чтобы можно было открыть нужный таб - инфа о табах в глобальном стейте. но это специальный случай

Danil
19.01.2017
11:37:08
Ну на табы я думаю онклик повешать, чтоб при клике рендерилась нужная форма

Google
Dmitry
19.01.2017
11:38:15
Ну локально только модификаторы для стилей хранить, а онклик кастомный снаружи все еще можно пробросить

Сергей
19.01.2017
11:38:22
открытый таб должен храниться вне компонента, ибо это не временное состояние

Nikita
19.01.2017
11:38:26
ты странными категориями мыслишь. у тебя есть табы, у них не должно быть onClick. Должен быть onSwitch(tab: string), например.

Nikita
19.01.2017
11:39:18
SyntheticEvent? не

можно onChange(tab: string, event: SyntheticMouseEvent)

Сергей
19.01.2017
11:40:21
нет, лучше уж первым ивент, ближе к стандарту

SyntheticEvent? не
я типы не указываю прост)

Nikita
19.01.2017
11:40:31
не согласен

ты выносишь кишки компонента наружу

Сергей
19.01.2017
11:40:56
id открытого таба это не кишки

Danil
19.01.2017
11:41:01
Ну я мыслил так. Есть таб, который является спаном. Я на него кликаю, следовательно событие onClick

Nikita
19.01.2017
11:41:04
сегодня switch по onClick, завтра по keyPress

Google
Nikita
19.01.2017
11:41:20
я про event

Сергей
19.01.2017
11:41:41
Nikita
19.01.2017
11:42:02
Ну я мыслил так. Есть таб, который является спаном. Я на него кликаю, следовательно событие onClick
не. есть таб. у него есть верстка - и насрать какая. А есть его внешний api - вот тут очень важно отделить его от верстки

Dmitry
19.01.2017
11:42:40
Мне кажется или вы про одно и то же?

Просто про разные названия

Nikita
19.01.2017
11:43:50
не, это важно. onClick - это кишками наружу. onChange/onSwitch/onTabUpdate - это ок

Dmitriy
19.01.2017
11:50:53
какой PropTypes задать для мапы строка-число вида {'10': 14,'15': 313, '514': 2231,...}? кол-во ключей динамическое

PropTypes.object eslint не пропускает

Dmitriy
19.01.2017
11:53:21
спасибо

Ivan
19.01.2017
12:25:31
ктонибудь в курсе может, в БД хранится текст с \r\n т.е. с переносами строки. когда получаю в стейт и вывожу из стейта, они теряются. хотя бд отдает json с ними

Eugeniy
19.01.2017
12:28:38
react по-моему удаляет все такое

Ivan
19.01.2017
12:29:34
нашел. надо задать css - white-space: pre-wrap;

Mikhail
19.01.2017
12:46:02
Denis
19.01.2017
12:46:39
Нет мы ещё хуже...
а то очень уж любят банковские работники на бэкенде из Java писать сайты )

Google
Adel
19.01.2017
12:48:39
ну или еще попроще чего уже есть

Denis
19.01.2017
12:48:48
чотакого?
ничего плохого, но обычно после ухода ключевого разработчика поддерживать ЭТО становится некому

ну и очень уж дорогое удовольствие Java для простых смертных и не банковского сектора

Adel
19.01.2017
12:50:48
программисты дорогие или писать долго?

Danil
19.01.2017
13:06:32
Из вышесказанного можно резюмировать, что всю мелкую работу с ui лучше делать в самих компонентах с использованием синтетик ивэнт

Так?

Danil
19.01.2017
13:08:57
Ну я все равно не понял что делать с 13 li

Вешать on change на все?

Aleksey
19.01.2017
13:09:28
откуда в <li> onChange

Danil
19.01.2017
13:09:58
Ну вот у меня 13 селектов, которые ещё и сделаны как li, к каждому привязана маска инпута. Мне получается на все селекты онклик повешать?

мм, onChange + value

Я вот и спрашиваю

Aleksey
19.01.2017
13:11:13
если это <li> то onChange там нет. на селектах есть onSelect

s/onSelect/onChange

Danil
19.01.2017
13:12:43
Ну получается надо 13 онкликов вешать?

Aleksey
19.01.2017
13:13:23
если у тебя кастомные селекты на <li> элементах - да

Google
Сергей
19.01.2017
13:13:28
события умеют всплывать так-то но не помню, как с этим в реакте)))

Aleksey
19.01.2017
13:13:51
нормально с этим в реакте. но он сам делегирует

Danil
19.01.2017
13:14:12
Ну там вообще нет селектов ul с li просто принцип работы как у селектов

Aleksey
19.01.2017
13:15:19
вешай onClick. реакт однохренственно на root компоненте слушает все события от дерева и сортирует. нет нужды возиться и заниматься ненужной микрооптимизацией с делегированием

Danil
19.01.2017
13:16:20
У меня ещё такой вопросик есть, как маски телефонов делаются, в гугле только джквери библиотека

Хочу в общем без библиотек сделать

Aleksey
19.01.2017
13:16:55
есть react-masked-input или как-то так

https://github.com/insin/react-maskedinput

Dmitrii
19.01.2017
13:17:55
кто как делает сабмит формы для редактирования данных, когда обновление денормализованного объекта может состоять из 3-4 запросов на разные эндпоинты

Aleksey
19.01.2017
13:18:30
а чего это на бэк не перенести? или к бэку доступа нет7

Admin
ERROR: S client not available

Aleksey
19.01.2017
13:18:31
?

Dmitrii
19.01.2017
13:18:52
нету доступа

Aleksey
19.01.2017
13:20:05
а в чем именно грабля? четыре запроса, конечно, не самая приятная ситуация но не так чтобы невозможная

Dmitrii
19.01.2017
13:21:50
да грабли нет, я понимаю что можно вообще убрать сабмит и сделать каждое поле обновляемым по onchange или делать диффы на сабмит и разбивать потом данные по разным запросам, мне интересно какими способами вы решали это, может что интересное будет

Aleksey
19.01.2017
13:23:51
честно говоря, обычно на бэк такая логика переносится. фронт, по идее, не должен знать нюансы как именно обрабатывать связанные объекты. иногда бывает что апдейт еще и по релейшенам что-то цепляет на бэке

Dmitrii
19.01.2017
13:24:30
согласен на 100%

Alexey
19.01.2017
13:25:54
это если монолитный бэк то да, а если куча микросервисов то приходится фронту всем рулить

Dmitriy
19.01.2017
13:25:56
обновление денормализованного объекта - это обычно обновляется сперва нормализованный, а потом уже бекенд делает денормализацию, причем не обязательно синхронно это делать

Alexey
19.01.2017
13:25:59
у меня такая же ситуация

Google
Dmitrii
19.01.2017
13:26:03
там как раз изза many-to-many обновление одной сущности разбито на кучу эндпоинтов, но редактироватся оно должно в одной форме как денормализованный объект

Dmitriy
19.01.2017
13:26:13
это через очереди и воркеры должно делаться на беке

не должно быть возможности привести систему в невалидное состояние, если ты отправил запрос на один ендпоинт, а на другой забыл

Aleksey
19.01.2017
13:27:29
у меня такая же ситуация
мрачновато. фронт от бэка отделен здоровенной такой хренью как сеть - ни транзакций ни гарантий доставки

Dmitriy
19.01.2017
13:28:13
поэтому лучше так: фронт отправляет в одном запросе все что нужно, на беке создались задачи все это раскидать по разным частям системы

имхо

Alexey
19.01.2017
13:28:40
это если нужна транзакционность, согласен

Dmitrii
19.01.2017
13:29:02
к сожелению пока бэк не поменять, поэтому я сделал каждое поле, как отдельная форма, на onchange с троттлингом посылается update, на одни и теже либо разные эндпоинты в зависимости от поля

Alexey
19.01.2017
13:29:04
в моем случае это только на update, и там можно одну часть отправить а другую нет

коллеги, у меня другой вопрос, тут ведь многие редаксы используют? сталкивались ли с древовидными структурами типа inerface Node { id: number, children: Node[] } Как решали задачу иммутабельно добавить/удалить ноду в дерево?

можно конечно развернуть в плоский список, тогда все понятно

Dmitriy
19.01.2017
13:30:52
есть алгоритмы иммутабельного обновления дерева

Aleksey
19.01.2017
13:31:46
что значит иммутабельно в контексте дерева? дерево должно быть представлено каким-то внутренним объектом тогда есть смысл говорить об иммутабельности

Dmitriy
19.01.2017
13:32:25
как и в контексте любого другого объекта, ты не можешь сделать tree.children.push()

Alexey
19.01.2017
13:33:12
так в этом и вопрос был

или вы не мне это поясняете?

Dmitriy
19.01.2017
13:33:31
иммутабельное обновление - это по сути копирование с заменой/удалением/добавлением части при копировании

это для @aleksxor было

Alexey
19.01.2017
13:33:49
а, ок

Aleksey
19.01.2017
13:35:56
вопрос был про то как дерево представлено. я так понял что реализация наивная - каждый элемент с корня это { id, children: [<ids>] }.

я бы порекомендовал глянуть в immutable.js. не пробовал там сильно глубокие рекурсивные структуры разбирать. но неглубокие вполне

Alexey
19.01.2017
13:37:16
нет, не children: [<ids>], я структуру выше привел в виде интерфейса TS

в общем, погуглю тогда алгоритмы, спасибо

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