
Котяй Негодяй
20.09.2017
19:12:13
И я неполохо живу.

Max
20.09.2017
19:13:19

Котяй Негодяй
20.09.2017
19:13:24
Есть общая структура, есть независимая кнопка. Почему я не могу завернуть её в контейнер, чтобы свободно перемещать его по структуре?

Google

Сергей
20.09.2017
19:13:33
Я ничего больше не напишу

Max
20.09.2017
19:13:56
мог бы написать “ой все”

Алексей
20.09.2017
19:14:02

Max
20.09.2017
19:14:18
ты либо объясни свою позицию, либо не ной ?

Stepan
20.09.2017
19:14:18
Часто юзаете bindActionCreators?

Котяй Негодяй
20.09.2017
19:14:33

Max
20.09.2017
19:14:54
в чем пиздец-то?

Котяй Негодяй
20.09.2017
19:19:03
По-моему, заебись. Есть баттон: мод1, мод2, etc...
export default compose(
connect( ... ),
withProps({ children: 'Logout' }),
)(MyButton)
Потом
<LogoutButton mod="one" />
<LogoutButton mod="two" />
<LogoutButton mod="three" />

Алексей
20.09.2017
19:21:09
а вот зачем пишут Container в конце компонента? я просто реально не врубаюсь ?зачем когда читаешь код знать это

Котяй Негодяй
20.09.2017
19:21:29

Google

Алексей
20.09.2017
19:21:50

Котяй Негодяй
20.09.2017
19:21:56
Но я называю так файлы.
У меня такой формат. Всё, кроме, чистого компонента, имеет суффикс сущности.
*Reducer, *Container, *Action, *Selector(s)
В редакторе удобно.
При этом, если сущность в своей папке, то там лежит index.js, который реэкспортит всё, что нужно.
Плюс настраиваю конфиг вебпака, линтера и флоу так, чтобы сущности с соответствующими суффиксами резолвились по их путям при импорте.
А то, что с большой буквы и без суффикса, считается компонентом.
import wtfReducer from 'wtfReducer'

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

Umer
20.09.2017
19:29:27

illiatshurotshka❄️
20.09.2017
19:29:55
а что вообще тестируют в реакт приложениях?

Umer
20.09.2017
19:30:11

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

Алексей
20.09.2017
19:30:37

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

illiatshurotshka❄️
20.09.2017
19:30:48
компоненты
например чтобы на пропсы правильно реагировали?

Котяй Негодяй
20.09.2017
19:31:03
Так что в моём случае это короче.

illiatshurotshka❄️
20.09.2017
19:32:11
оо

Google

Котяй Негодяй
20.09.2017
19:32:19
Но это не всегда удобное, насос ты используешь много хоков.

illiatshurotshka❄️
20.09.2017
19:32:23
понятно

Котяй Негодяй
20.09.2017
19:32:27
Бля
Лол
Но это не всегда удобно, если ты используешь много хоков.

Дмитрий
20.09.2017
19:35:04

Default
20.09.2017
19:35:15
SQL
ЛОЛ

Дмитрий
20.09.2017
19:35:25
Ну не смешно, это так и есть

Алексей
20.09.2017
19:35:45

Котяй Негодяй
20.09.2017
19:35:54
Мы юзали альфу material-ui, т.к. рассчитывали, что релизнемся вместе с их стабильным релизом. Времени на тесты не было, юзали снэпшоты. Они заебали менять алгоритм хеширования имён классов.
Это к вопросу о том, когда их не надо юзать.

Дмитрий
20.09.2017
19:36:41

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


Алексей
20.09.2017
19:38:47

Котяй Негодяй
20.09.2017
19:39:01
Я бы вот не хотел работать с реляционной моделью на клиенте.
Хотя иногда приходится что-то такое реализовывать. Но я прям чувствую, что это неправильно.

Дмитрий
20.09.2017
19:40:34

Алексей
20.09.2017
19:41:00

Google

Котяй Негодяй
20.09.2017
19:41:03
Чтобы получить айди. А потом по айди что-нибудь.

Алексей
20.09.2017
19:41:20
вообще наверно даже можно что то такое придумать

Котяй Негодяй
20.09.2017
19:41:31

Дмитрий
20.09.2017
19:41:33
Даже вот достаточно было бы тех же стандартных методов массивов, но для данных, находящихся в нормализованной форме)


Maksim
20.09.2017
19:41: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? Особенно интересует момент с добавлением и обновлением вложенных сущностей и особенно с деревом реплаев к таску и также интересен момент когда нужно обратится к родительским сущностям в компоненте получив через пропсы только свой объект.
как разруливать, то что на сервере могут быть тысячи сущностей, все их выкачивать не имеет смысла? как разруливать то что приходящий набор полей с сервера может быть разным для одной и той же сущности в разных ситуациях ситуациях? (в некоторых местах нужен укороченный набор данных, формировать полный на сервере не рационально)?


Дмитрий
20.09.2017
19:41:37

Котяй Негодяй
20.09.2017
19:41:58
Да хорош. Вам ещё что-то нужно?

Дмитрий
20.09.2017
19:42:10

Алексей
20.09.2017
19:42:29

Maksim
20.09.2017
19:42:50

Admin
ERROR: S client not available

Дмитрий
20.09.2017
19:43:16
Да хорош. Вам ещё что-то нужно?
Да, у нас вот тут чудовищно объёмная модель данных, на порядки больше типичного crud, и что-то прям пипец тяжко :(
https://github.com/goodmind/treact

Алексей
20.09.2017
19:43:17

Дмитрий
20.09.2017
19:43:28
Причём мобикс не катит
Тупо из-за громадности модели, которую даже просто типами охватить малореально)

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

Дмитрий
20.09.2017
19:44:15

Котяй Негодяй
20.09.2017
19:44:29

Дмитрий
20.09.2017
19:44:31
Не

Котяй Негодяй
20.09.2017
19:44:34
Ок

Google

Котяй Негодяй
20.09.2017
19:44:43
Да орм это.

Дмитрий
20.09.2017
19:44:49
Ну точнее, да, но нет))

Котяй Негодяй
20.09.2017
19:44:51
Тупо по определению.

Maksim
20.09.2017
19:45:22

Котяй Негодяй
20.09.2017
19:45:24
Крутая идея.
А что если мы сможем использовать в качестве источника данных не только память, но и бд?
Или рест-сервис?
Или абстрактный коннектор?

Дмитрий
20.09.2017
19:46:45
Тут в принципе безразлично откуда делать запросы, проблема в самом запросе)

Котяй Негодяй
20.09.2017
19:47:15
Правда тогда геттеры-сеттеры будут асинхронными.
Хотя это пофиг.
Можно всё равно в синхронном стиле писать.

Дмитрий
20.09.2017
19:48:26
Ага

Котяй Негодяй
20.09.2017
19:49:02
И ты готов реализовать такую крутую абстракцию с универсальными коннекторами?

Дмитрий
20.09.2017
19:50:43
Я прикидывал трудозатраты, понял, что пока просто не успеваю

Котяй Негодяй
20.09.2017
19:51:08
Я тоже. Но поучаствовал бы.

Дмитрий
20.09.2017
19:52:19
Я решил идти от обратного и постепенно заменяю в проектах бойлерплейт для запросов на общие функции
Но вопросов пока больше чем ответов)) Есть подозрение, что это всё решается вообще иным образом, не отталкиваясь от моделей

Котяй Негодяй
20.09.2017
19:53:48
Сваггер, лупбэк.

Дмитрий
20.09.2017
19:54:31
Ну просто это не единственный вариант

Котяй Негодяй
20.09.2017
19:55:03