@react_js

Страница 710 из 5115
Арсений
08.12.2016
20:21:46
>ну мне например надо было несколько функций чтобы было совмещено, inline edit, пагинация, сортировка, кликабельность строк. реализация на datatables + jquery - вполне понятная, ui-grid (под angular) - сделал за пол-дня, на реакте вот что-то никак Что подразумевается под inline edit?

Дмитрий
08.12.2016
20:21:55
Я сейчас не использую редакс, но в те времена когда использовал я хранил чисто хеш таблиц с хешем айдишников и объектов без отдельного массива айдишников. И у меня был только один редюсер который автоматически обрабатывал все экшины для всех таблиц. То есть вместо ADD_USER я пишу dispatch({type: 'add', table: 'user', record: {...}}) и также с обновлением - dispatch({type: 'update', table: 'user', recordId: 123, mutation: {....}}) и третий экшин у меня был dispatch({type: 'delete', table: 'user', recordId: 123}). Больше кастомных экшинов не было. А один единственный редюсер перехватывает эти три вида действий - add, update, delete и расфасовывает по айдишникам объекты в состоянии и получаем вот такое состояние { users: { 1: {id: '1', name: 'user1', boards: ['1','2','3']}, 2: {id: '2', name: 'user2', boards: ['2','3','4']}, } boards: { 1: {id: '1', title: 'board1',user: '1',posts: ['1','2','3']}, 2: {id: '2', title: 'board2',user: '2',posts: ['2','3','4']}, } posts: { 1: {...} 2: {...} } } То есть у нас данные в полностью нормализированном состоянии и мы во всем приложении диспатчим всего три типа экшинов - add, update, delete, передавая параметром имя таблицы, и таким образом у нас один редюсер автоматически обрабывает все за нас и мы больше не пишем редюсеры и экшины на каждый чих
Экшны служат для документации происходящего, поэтому хоть какое то объявление у них желательно

Oleg
08.12.2016
20:25:05
Мне подход Богдана близок, но я всетаки склоняюсь что нормализованные коллекции в стейте редаксового стора для каждого идентифицируемого переиспльзуемого контрола хранятся, а вот такие универсальные экшены как раз дополнительно при успешном изменении диспатчатся и влекут за собой обеспечение когерентности во всех стейтах для компонент

в итоге храним только то что показываем

Google
Дмитрий
08.12.2016
20:30:31
Каждый экшн должен быть атомарным, то есть желательно не допускать некогерентного состояния между ними изначально

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

KlonD90
08.12.2016
20:32:45
На что вы заменяете момент?

Oleg
08.12.2016
20:34:25
На самом деле 90% всего это CRUD, и вполне естественно что появляются коллекции с универсальными экшенами. Богдан судя по всему делал все с этой мыслью.

Bogdan
08.12.2016
20:34:46
Дмитрий
08.12.2016
20:35:20
Согласованное

Aleh
08.12.2016
20:35:54
типа каждый экшн не ломает инвариант

окей

понял)

никакой экшн не может привести систему в неправильное состояние, проще говоря

Google
Дмитрий
08.12.2016
20:36:25
Да

Oleg
08.12.2016
20:36:33
redux не противоречит crud, ровно как не противоречит концепции создания переиспользуемых компонент

Aleh
08.12.2016
20:36:56
конечно не противоречит, просто кода много

Oleg
08.12.2016
20:37:29
просто в redux для этого прийдется иметь 1 универсальный редьюсер и фабрику экшенов под каждый тип компонент

KlonD90
08.12.2016
20:37:50
Вот есть кстати красивый нормализованный стейт. Как его очищать от лишних данных?

Aleh
08.12.2016
20:38:36
господь дал вам js объект, в котором может быть любая вложенность

накой черт делать что-то реляционное?)

Дмитрий
08.12.2016
20:39:03
redux против вложенности

Вот есть кстати красивый нормализованный стейт. Как его очищать от лишних данных?
Не вносить их. В моём примере выше лишними данными является поле id в объекте, потому что оно выностится за его пределы. Поэтому редюсер, который отвечает за сохранение только самого объекта просто кладёт объект в стор, убирая из него ставшее ненужным поле

KlonD90
08.12.2016
20:40:08
накой черт делать что-то реляционное?)
Ну тому есть причины типа пришли богатые данные И часть из них можно держать постоянно на что-то проще подписаться как отдельную вещь

Bogdan
08.12.2016
20:40:47
накой черт делать что-то реляционное?)
а как с чистой вложенностью моделировать дерево в редаксе? тебе нужно обновить объект на 100-ом уровне вложенности - тебе с редаксом нужно будет вернуть новые объекты всех родителей всех 99 уровней вверх а это будет тормозить

Oleg
08.12.2016
20:41:37
Не вносить их. В моём примере выше лишними данными является поле id в объекте, потому что оно выностится за его пределы. Поэтому редюсер, который отвечает за сохранение только самого объекта просто кладёт объект в стор, убирая из него ставшее ненужным поле
Ты не понял. Кейс что данные когда-то показывались, легли в коллекцию. Потом перестали показываться. И может быть никогда больше не будут показываться. Но место у тебя уже занимают

Aleh
08.12.2016
20:42:27
redux против вложенности
неоправданной же

Дмитрий
08.12.2016
20:42:35
Ну это да

Ну на одной страницы они нужны на другой уже нет тип данных тот же
то есть при переходе на какую-то страницу мы можем удалить часть данных? Тогда редюсер, срабатывающий при переходе же

Aleh
08.12.2016
20:44:05
связанные аггрегаты конечно лежат отдельно, но сам аггрегат вполне себе лежит целеньким

Oleg
08.12.2016
20:44:28
Соотвественно возникает необходимость в понимании что сейчас не показывается и требуется стратегия вытеснения из кеша

Google
KlonD90
08.12.2016
20:45:20
то есть при переходе на какую-то страницу мы можем удалить часть данных? Тогда редюсер, срабатывающий при переходе же
Да но не хотелось бы вот прямо на переходе удалять потому как это типа кэш между делом

Oleg
08.12.2016
20:45:26
как понять что данные не показываются уже никем и их можно вытеснить?

Aleh
08.12.2016
20:45:50
Дмитрий
08.12.2016
20:45:59
как понять что данные не показываются уже никем и их можно вытеснить?
Эта проблема лежит вне redux, разве нет? Редакс может эффективно управлять удалением данных, но алгоритм видимости не должен быть возложен на стейт

Aleh
08.12.2016
20:46:19
this.props.nextPage()

или как там

Oleg
08.12.2016
20:47:14
вот все эти вопросы и привели меня к тому что стейт под контрол, но при успешном изменении записи все пытаются навести в своих стейтах когерентность

Дмитрий
08.12.2016
20:47:50
Что значит пытаются? redux — это конечный автомат состояний

Он перещёлкивается как реле

Aleh
08.12.2016
20:48:16
Эта проблема лежит вне redux, разве нет? Редакс может эффективно управлять удалением данных, но алгоритм видимости не должен быть возложен на стейт
есть алгоритм формирования данных из стейта, он может складывать в стейт, может в каком reselect жить. Алгоритм от этого особо не меняется

Дмитрий
08.12.2016
20:48:19
Он не должен пытаться, он просто должен делать максимально простые действия по хлопку

Кстати

Дмитрий
08.12.2016
20:51:26
WeakMap

Oleg
08.12.2016
20:51:50
не придирайся. я говорю про то что когда ты изменяешь запись и после успешного запроса диспатчишь SOME_SUCCESS, то следом диспатчится еще какой-нибудь ITEM_CHANGE, который слушают все, кто заинтересован в этой коллекции и по его содержанию изменяют свои состояния

Aleh
08.12.2016
20:52:01
WeakMap
они тогда ж не успеют в компонент попасть)

Vladimir
08.12.2016
20:52:10
Подскажите пакет в npm для русификации других пакетов!
подожди мы разве не высокомерные ублюдки

Ҫѐҏӗѫӑ
08.12.2016
20:55:58
ну мапы с сетами да

разве что

Дмитрий
08.12.2016
20:57:07
Я понял

Google
Дмитрий
08.12.2016
20:57:23
Тогда redux просто не вариант

Тут действительно нужна либо структура на Weak*, либо какой-то алгоритм, определяющий актуальность данных

Ҫѐҏӗѫӑ
08.12.2016
20:58:17
я начала истории не читал если что, просто влез позанудничать

Дмитрий
08.12.2016
21:00:21
Но алгоритм актуализации кэша абстрагирован от стора, ему технически всё равно кому говорить "отчистись", redux, redis или чему то ещё

Dmitry
08.12.2016
21:01:08
Лал

Дмитрий
08.12.2016
21:02:03
Или я по прежнему не понимаю, чего вы хотите) Началось всё с нормализации, которая не является вопросом актуализации кэширования

Damir
08.12.2016
21:02:11
почему так не популярен https://github.com/Volicon/NestedLink ? вроде годное решение для валидации

Bogdan
08.12.2016
21:05:52
ага, может быть либо вложенность 2, либо 100. Иначе прям никак - -
На самом деле нормализация в редаксе это зло, поэтому я использую mobx - там хоть вложенность в виде дерева, хоть циклические ссылки между объектами (объект юзера может хранить массив объектов тодо а каждый объект тодо хранит ссылку обратно на объект юзера) - все это просто блаженство после редакса))

Ches
08.12.2016
21:18:57
находил кто нибудь https://www.udemy.com/the-complete-react-native-and-redux-course/ где скачать? от Stephen Grider

Admin
ERROR: S client not available

Yung
08.12.2016
21:20:41
А не, вру, нет там нейтива

Ches
08.12.2016
21:21:37
ага, и в гугле тоже не нашел(

Adel
08.12.2016
21:24:23
Соотвественно возникает необходимость в понимании что сейчас не показывается и требуется стратегия вытеснения из кеша
может имеет смысл в сторе держать только справочники и актуальную отображаемую сущность, а кэш пасти отдельно?

Дмитрий
08.12.2016
21:27:12
"Проблем в IT две: инвалидация кэша и именование переменных"

Ches
08.12.2016
21:27:27
посоветуйте может какие нибудь адвансед видеокурсы по реакту?

Adel
08.12.2016
21:35:46
"Проблем в IT две: инвалидация кэша и именование переменных"
инвалидацию отдельного кэша можно положить на плечи этого собственно кэша - есть отдельные либы, которые именно этим занимаются, и не совать эти данные в редуксов стор

а вот либ, которые занимаются именованием переменных нет

*правильным

Google
Adel
08.12.2016
21:37:13
я так понимаю, фетчинг данных по требующейся сущности можно завернуть в мидлвару, которая будет собственно выплевывать что-то из кэша, либо перезапрашивать

Dmitry
08.12.2016
21:44:16
А точно ли зафетченные данные вообще нужны в redux? лол

И кэше

Дмитрий
08.12.2016
21:46:11
Я бы поставил вопрос скорее даже так, а сколько вообще должно быть данных, чтобы думать о кэшировании?

Это же невероятно громадный объём какой-то

Dmitry
08.12.2016
21:46:46
Ну вот да

Тут на самом деле два вопроса

Adel
08.12.2016
21:53:08
Это же невероятно громадный объём какой-то
не совсем, если речь идет об оффлайн-редактировании, то mru

например

и в локастор его

Evgeny
08.12.2016
22:27:22
Посоветуйте компонент для стики-хидера

https://github.com/captivationsoftware/react-sticky

Мне вот эта штука понравилась, но там пиздос просто по перформансу

Alexander
08.12.2016
22:34:02
я юзал https://github.com/yahoo/react-stickynode, но он не все, что мне надо было, умел

пришлось докостыливать

Evgeny
08.12.2016
22:34:56
Ща гляну

По перформансу задрочились, да

Но нужно дописывать

У react-sticky есть клевая тема с <StickyContainer />

Плюс stickyClassName — какой класс поставить, когда компонент в стики ушёл

jdc
08.12.2016
22:50:06
Подскажите как хедер прикрепить к верхней части экрана При скроле на телефоне

Andrew
08.12.2016
22:50:33
что-то типа CSS

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