@react_js

Страница 2179 из 5115
Котяй Негодяй
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 в конце компонента? я просто реально не врубаюсь ?зачем когда читаешь код знать это

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
import wtfReducer from 'wtfReducer'
чем это лучше import wtfReducer from 'reducers/wtf'

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

Котяй Негодяй
20.09.2017
19:30:12
Алексей
20.09.2017
19:30:37
Котяй Негодяй
20.09.2017
19:30:46
чем это лучше import wtfReducer from 'reducers/wtf'
Ну и я всё равно буду писать суффиксы.

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
так же как и в реляционных базах делаются связи, через поле, например с id
Ещё бы язык запросов для такого придумать, было бы супер

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
https://github.com/tonsky/datascript же)
Да, я смотрел уже конечно) Но я не оч люболю кложур-вей Вот такой же бы, но на flow (я даже согласен на тайпскрипт)

Котяй Негодяй
20.09.2017
19:38:22
Дело не в самом болерплейте, мобикс в отличии от редакса предлагает уникальные фичи при работе с состоянием - возможность создавать ссылки между объектами а если вкратце то а это позволяет удобно работать с состоянием приложения как с бизнес-сущностями. Например есть такая бизнес-логика обычного приложения менеджера задач - у юзера может быть много папок, у каждой папки может быть много проектов, у каждого проекта может быть много тасков и у каждого таска может быть много комментариев и каждый комментарий также может иметь много реплаев (получается дерево комментариев) и соотвественно каждую сущность можно создать, отредактировать или удалить. С мобиксом как мы описали бизнес-сущности и связи 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:38:47
Да, я смотрел уже конечно) Но я не оч люболю кложур-вей Вот такой же бы, но на flow (я даже согласен на тайпскрипт)
а мне наоборот кажется что язык запросов не нужен, мы так можем пользоватся всеми преимуществами языка на котором пишем, а язык запросов это гемор, когда нестандартные кейсы) в SQL то кмк это необходимость из-за сериализации и оптимизаций под капотом

Котяй Негодяй
20.09.2017
19:39:01
Я бы вот не хотел работать с реляционной моделью на клиенте.

Хотя иногда приходится что-то такое реализовывать. Но я прям чувствую, что это неправильно.

Дмитрий
20.09.2017
19:40:34
а мне наоборот кажется что язык запросов не нужен, мы так можем пользоватся всеми преимуществами языка на котором пишем, а язык запросов это гемор, когда нестандартные кейсы) в SQL то кмк это необходимость из-за сериализации и оптимизаций под капотом
Ну я под языком запросов имею ввиду базовый дсл для выборки и обновления данных, чтобы вообще не задумываться о том, что под капотом где-то там находится нормализованные объекты

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

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

Дмитрий
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
GraphQL
Нее

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

Дмитрий
20.09.2017
19:42:10
Maksim
20.09.2017
19:42:50
слишком много если
пока всего 2, и они вполне себе реальны

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

Алексей
20.09.2017
19:43:17
пока всего 2, и они вполне себе реальны
ну я вот вообще нихера не понял))

Дмитрий
20.09.2017
19:43:28
Причём мобикс не катит

Тупо из-за громадности модели, которую даже просто типами охватить малореально)

Котяй Негодяй
20.09.2017
19:44:00
Я уже давно эту идею вынашиваю)
Типа при объявлении схемы ты в свойстве описываешь связь, а при обращении к нему получаешь сущность?

Котяй Негодяй
20.09.2017
19:44:29
Дмитрий
20.09.2017
19:44:31
Не

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

Да орм это.

Google
Дмитрий
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
Ну просто это не единственный вариант
Кстати. У тебя всегда есть интересное предложение. Ты что юзаешь для этого?

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