
Kolyamba
20.09.2017
16:01:35
о, через hash наверное сделаю ) не уверен, что на хостинге можно что-то настроить, он бичесвкий совсем. спасибо

Play
20.09.2017
16:24:17
Для SEO какую либу сечас юзают повсеместно?

Egor
20.09.2017
16:24:38
react-helmet

Play
20.09.2017
16:29:41

Google

Дмитрий
20.09.2017
16:36:51
:(
Во во ? Я к тому моменту уже успел обнадёжиться, мол щас как упрощу всё)
Ичсх, там есть refine, позволяющий "вывести" тип, но он оказывается полностью бесполезен ?
Шаг влево шаг вправо — расстрел
Зря только к нему тайпинги для флоу сделал)

Kirill
20.09.2017
17:27:47
Камрады, использующие стайлед, что юзаете для сеток?
Или проще самому сделать?..

Сергей
20.09.2017
17:35:12
парни, что быстрее работает и есть ли в них разница?
ids.map(id => <Item id={id} />) vs ids.map(id => <div><SomeComponent id={id} /></div>)
интересует ререндер при изменении ids, будет ли разница если выставление ключей будет одинаковым?
в первом случае в Item такое же содержание, как в div
но в первом реальный компонент, а во втором просто div из лупа

Сергей
20.09.2017
17:45:36

Сергей
20.09.2017
17:46:06
я так понимаю сравнение идет все равно по key и разницы вроде нет

Сергей
20.09.2017
17:46:33
ты кстати им key не передал
кстати

Google

Сергей
20.09.2017
17:46:40
второй вариант не сработает
будет варн
нужно ставить key на <div>

Сергей
20.09.2017
17:47:06

Bogdan
20.09.2017
17:49:15
ну и в первом случае key нужен


Max
20.09.2017
18:43:16
с мобх меньше бойлерплейта?
Дело не в самом болерплейте, мобикс в отличии от редакса предлагает уникальные фичи при работе с состоянием - возможность создавать ссылки между объектами а если вкратце то а это позволяет удобно работать с состоянием приложения как с бизнес-сущностями.
Например есть такая бизнес-логика обычного приложения менеджера задач - у юзера может быть много папок, у каждой папки может быть много проектов, у каждого проекта может быть много тасков и у каждого таска может быть много комментариев и каждый комментарий также может иметь много реплаев (получается дерево комментариев) и соотвественно каждую сущность можно создать, отредактировать или удалить.
С мобиксом как мы описали бизнес-сущности и связи one-to-many или many-to-many, так мы и и храним - объект юзера хранит массив объектов-папок, внутри папки будем хранить массив объектов-проектов, внутри проекта будем хранить массив объектов-тасков а в объекте таска будем хранить массив объектов комментариев и внутри каждого объекта комментария храним также массив других комменатриев-реплаев.
Создавать редактировать или удалять сущности очень просто - для создания просто создаем объект и пушим в массив, для удаления делаем сплайс из массива для редактирования просто изменяем одно свойство и вот таким одинаковым образом работаем как с папками так с проектами так и с более глубокими сущностями
И самое главное эти сущности могут быть связаны между собой что упрощает логику в обработчиках. Например когда рендерим таски в компоненте проекта <div>{project.tasks.map(task=><Task task={task}/>)}</div> то получив в компоненте Task через пропсы только нужный объект состояния (в данном случае task) часто бывает нужно обратиться к свойству какой-то родительской сущности например project (чтобы например проверить тип или какой-то свойство перед редактированием). И тут конечно можем выдумывать различные костыли передавая через пропсы также объект project и другие родительские сущности (а это может повлечь за собой изменение других родительских компонентов) а можем просто при создании таска добавить свойство project и записать в него ссылку на проект и обратится к свойству просто через task.project.someprop. В итоге взяв за правило при создании любой сущности записывать в свойство объекта ссылку на родительскую сущность можно очень удобно обращаться ко всему состоянию независимо от уровня вложенности например получив через пропсы комментарий можно обратится к папке в котором находится комментарий - comment.task.project.folder.name и это не потребует изменения всех вышестоящих компонентов.
А теперь попробуйте ответить на вопрос как бы вы разрабатывали такое приложение используя редакс? Сколько редюсеров бы вам понадобилось? Как работали бы со связями one-to-many? Особенно интересует момент с добавлением и обновлением вложенных сущностей и особенно с деревом реплаев к таску и также интересен момент когда нужно обратится к родительским сущностям в компоненте получив через пропсы только свой объект.


Dzianis
20.09.2017
18:45:38
Да, у редукса когда вложенный стейт все усложняется
А аналог middleware для сайд эффектов какое то есть?
Max в редуксе довольно удобно экшенами декларативно описывать сайд эффекты, которые и тестируются хорошо и модулизируются.

Сергей
20.09.2017
18:52:08

Stepan
20.09.2017
18:52:34

Джон
20.09.2017
18:53:29

Enjoy the
20.09.2017
18:53:52
Это для него axios обычно используют?

Stepan
20.09.2017
18:54:23

Dzianis
20.09.2017
18:54:30
Хм, в русском языке 2 способа заимствований по буквам и звукам. Вечный холивар)

Stepan
20.09.2017
18:54:33
Ридакс

illiatshurotshka❄️
20.09.2017
18:54:42

Джон
20.09.2017
18:54:55
ору

illiatshurotshka❄️
20.09.2017
18:55:11
кто-нибудь пользовался перевождем?


Алексей
20.09.2017
18:55:36
Дело не в самом болерплейте, мобикс в отличии от редакса предлагает уникальные фичи при работе с состоянием - возможность создавать ссылки между объектами а если вкратце то а это позволяет удобно работать с состоянием приложения как с бизнес-сущностями.
Например есть такая бизнес-логика обычного приложения менеджера задач - у юзера может быть много папок, у каждой папки может быть много проектов, у каждого проекта может быть много тасков и у каждого таска может быть много комментариев и каждый комментарий также может иметь много реплаев (получается дерево комментариев) и соотвественно каждую сущность можно создать, отредактировать или удалить.
С мобиксом как мы описали бизнес-сущности и связи one-to-many или many-to-many, так мы и и храним - объект юзера хранит массив объектов-папок, внутри папки будем хранить массив объектов-проектов, внутри проекта будем хранить массив объектов-тасков а в объекте таска будем хранить массив объектов комментариев и внутри каждого объекта комментария храним также массив других комменатриев-реплаев.
Создавать редактировать или удалять сущности очень просто - для создания просто создаем объект и пушим в массив, для удаления делаем сплайс из массива для редактирования просто изменяем одно свойство и вот таким одинаковым образом работаем как с папками так с проектами так и с более глубокими сущностями
И самое главное эти сущности могут быть связаны между собой что упрощает логику в обработчиках. Например когда рендерим таски в компоненте проекта <div>{project.tasks.map(task=><Task task={task}/>)}</div> то получив в компоненте Task через пропсы только нужный объект состояния (в данном случае task) часто бывает нужно обратиться к свойству какой-то родительской сущности например project (чтобы например проверить тип или какой-то свойство перед редактированием). И тут конечно можем выдумывать различные костыли передавая через пропсы также объект project и другие родительские сущности (а это может повлечь за собой изменение других родительских компонентов) а можем просто при создании таска добавить свойство project и записать в него ссылку на проект и обратится к свойству просто через task.project.someprop. В итоге взяв за правило при создании любой сущности записывать в свойство объекта ссылку на родительскую сущность можно очень удобно обращаться ко всему состоянию независимо от уровня вложенности например получив через пропсы комментарий можно обратится к папке в котором находится комментарий - comment.task.project.folder.name и это не потребует изменения всех вышестоящих компонентов.
А теперь попробуйте ответить на вопрос как бы вы разрабатывали такое приложение используя редакс? Сколько редюсеров бы вам понадобилось? Как работали бы со связями one-to-many? Особенно интересует момент с добавлением и обновлением вложенных сущностей и особенно с деревом реплаев к таску и также интересен момент когда нужно обратится к родительским сущностям в компоненте получив через пропсы только свой объект.
так же как и в реляционных базах делаются связи, через поле, например с id

Google

Сергей
20.09.2017
18:56:56
что-то подзаебал redux, кажется пора попробовать mobx
вокруг redux надо прыгать с бубном, чтобы он на каждый чих не вызывал функцию рендера

Котяй Негодяй
20.09.2017
18:57:55

Сергей
20.09.2017
18:58:07
рекомпоз нихера не может

Котяй Негодяй
20.09.2017
18:58:25
Ой всё.

Сергей
20.09.2017
18:58:51
попробуйте продебажить а ну тупо пихать куда попало рекомпоз хелперы

Котяй Негодяй
20.09.2017
18:58:54
И ваще я не понял предложение.

Сергей
20.09.2017
18:59:56

Сергей
20.09.2017
19:00:12
в рекомпоз еще такая вложенность, что пиздец покажется добрым словом когда увидишь цепочку вызовов в каком-нибудь сложном контейнере, которого есть штук 200 на странице
это все компоненты и хреновы анмаунты когда начинаешь перемещаться между страницами/списками

Котяй Негодяй
20.09.2017
19:00:58

Сергей
20.09.2017
19:01:17

Котяй Негодяй
20.09.2017
19:01:51

Сергей
20.09.2017
19:02:33
иногда дешевле is-hidden убрать/добавить чем делать маунт/анмаунт

Котяй Негодяй
20.09.2017
19:02:50
Пруф, что это существенно.

Google

Алексей
20.09.2017
19:03:23

Сергей
20.09.2017
19:03:24

Котяй Негодяй
20.09.2017
19:04:02

Сергей
20.09.2017
19:04:06

Котяй Негодяй
20.09.2017
19:04:38

Сергей
20.09.2017
19:04:55

Сергей
20.09.2017
19:05:03

Котяй Негодяй
20.09.2017
19:05:07

Алексей
20.09.2017
19:05:19

Котяй Негодяй
20.09.2017
19:05:30

Сергей
20.09.2017
19:06:13

Котяй Негодяй
20.09.2017
19:06:14
Сова, ты стал слишком горазд на быстрые (дешёвые по перфомансу) умозаключения. Так мозги могут и подзастыть. =)

Сергей
20.09.2017
19:06:20
Когда куча пропс

Котяй Негодяй
20.09.2017
19:07:18
Не, ну код-сплиттинг никто не отменял, но это же совсем про другое.

Сергей
20.09.2017
19:08:32

Сергей
20.09.2017
19:08:36
пропсов как можно меньше ставим, дело не в них, а в больших массивах данных

Котяй Негодяй
20.09.2017
19:09:07

Сергей
20.09.2017
19:11:22

Котяй Негодяй
20.09.2017
19:11:40

Google

Котяй Негодяй
20.09.2017
19:12:06
У меня кнопка логаут может быть завёрнута в контейнер.