@react_js

Страница 937 из 5115
Dreamerinnoise
11.02.2017
15:16:49
архитектурь как хочешь

Ilya
11.02.2017
15:18:24
Согласен. Я тут попробовал сделать драг и друп дерево на редаксе и поседел на профалинге

Вышло reselect на reselect и redux reduce-reducers - ад адский. Надо каждой ноде легко брать уровень, предыдущее, следующее, следующего родителя. Mobx решает, но, нормализация нужна тоже

@computed get childs если делать по записям ужасные тормоза будут из-за того что глубина сравнения большая.

Google
Ilya
11.02.2017
15:22:37
@computed get childIds и только иды решило

А потом выбираем по getById

У кого были такие похожие задачи?

Mike
11.02.2017
15:23:17
Refs не?

Dreamerinnoise
11.02.2017
15:23:21
Ilya
11.02.2017
15:24:22
Щас представлю код, секунду

Тут выходит, у меня есть dragNode и hoverNode и мне надо брать при перетаскивании следующего родителя через refs?

Dreamerinnoise
11.02.2017
15:30:12
ref Это модификатор для твоего Observable

observable.ref: Disables automatic observable conversion, just creates an observable reference instead.

Или @zuldare про другое?

Mike
11.02.2017
15:31:38
Я про рефы, чтоб айдишниками не пользоваться

https://facebook.github.io/react/docs/refs-and-the-dom.html

Ilya
11.02.2017
15:32:16
<Node ref="child12" ?

Google
Ilya
11.02.2017
15:32:24
Я так понял

Mike
11.02.2017
15:33:05
Да

Ilya
11.02.2017
15:34:01
Конечно такой pure режим)

Возможный факт, но смесь логики и отображения может получиться

Dreamerinnoise
11.02.2017
15:35:38
Конечно такой pure режим)
если по ссылкам сранивает всё равно тормозит?

Ilya
11.02.2017
15:37:25
@computed.struct childIds который высчитывает фильтром детей как-то оказался самым оптимальным, без головной боли и чистым по коду

И по скорости лучше

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

Тут надо сеттер на parentId навесить

Dreamerinnoise
11.02.2017
15:40:46
Ilya
11.02.2017
15:42:13
Чтобы по содержимому сверял, тк filter всегда возвращает новый массив и его не проверить как =

это затратно конечно

Adel
11.02.2017
15:58:54
А что собственно мешает нормализоваться с мобиксом?

Извините, что вмешиваюсь

Oleg
11.02.2017
16:11:46
Кто практикует нормализацию данных? Какую практику вытеснения данных из нормализованного хеша используете?

Vasiliy
11.02.2017
16:18:55
хороший вопрос, присоединяюсь, я не использую никакую, удаляю из ids, оставляю в entities

Adel
11.02.2017
16:46:42
Дольше, чем она нужна

Клади все в локалстордж

Оттуда бери мидлварой

Google
Adel
11.02.2017
16:48:09
Справочную тоже клади в локалстордж, бери ее при ините приложения

Кэшируем айдишники щас по ключу «нормализованная строка запроса»

С таймаутом

Несправочную с не очень большим таймаутом, справочную с большим. Плюс у нас по вебсокету приходят обновления

Дальше поле для маневра

Обсерайте, жду)

Алексей
11.02.2017
17:42:28
Добрый вечер, господа. Такой вопрос. Существует ли в природе роутер, удовлетворяющий таким вот требованиям: 1) history api, hash и серверный роутинг, 1) не зависит от view (react-router отпадает), 2) поддерживает базовый URL, то есть например способен обрабатывать url http://example.com/myapp/users/user как /users/user, 3) поддерживает переход через вызов определённой функции типа router.go('/users/user') ?

собственно react-router похоже удовлетворяет всем пунктам, кроме первого

Andrey
11.02.2017
17:45:29
http://router5.github.io

Алексей
11.02.2017
17:48:14
http://router5.github.io
а он умеет делать переход по определённому пути, а не по имени роутера?

Yumi
11.02.2017
19:04:23
http://router5.github.io
agnostic - как это понимать?

Arseniy
11.02.2017
19:05:08
то что он не зависит от того какой ты фреймворк используешь, я бы так определил

Andrey
11.02.2017
19:05:54
да, там нет специфичных моментов для определенного фреймворка

Никита
11.02.2017
19:22:59
Всем привет! Подскажите как решить проблему. Есть лоадер { test: /\.p?css$/, use: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader?modules!postcss-loader', }), }, И теперь хочу использовать react-table. В нём есть свой css файл. Как его оставить в стандартном виде, а не прогонять через модули? Спасибо!

Vasiliy
11.02.2017
19:26:51
include/exclude

Никита
11.02.2017
19:27:45
эту css'ку я подгружаю через import 'react-table/react-table.css'

Vasiliy
11.02.2017
19:27:57
да, include/exclude { test: /\.css$/, loader: getCSSLoader('app'), exclude: /node_modules/, include: [ paths.styles, paths.scripts, ], }, { test: /\.css$/, loader: getCSSLoader('vendor'), include: /node_modules/, },

Andrew
11.02.2017
19:28:48
можешь прописать include и папку со своими сорцами

либо exclude для исключения папок

Oleg
11.02.2017
19:29:04
Никакую. Не храни в сторе не справочную информацию.
не вполне все понял из сообщения. что надо хранить в сторе а что не надо. Я храню в сторе в нормализованном виде коллекции.

Google
Никита
11.02.2017
19:29:13
понял! Спасибо большое!

Admin
ERROR: S client not available

Oleg
11.02.2017
19:32:52
с сервера сразу гоню entities: {[collection]: {[id]: any}} и обновляю нормализованный стор. Там два вопроса 1) грамотный мердж partial 2) GC по записям в нормализованных коллекциях. refcount какой-нибудь придется выдумывать

Vasiliy
11.02.2017
19:33:51
их столько существует этих политик замещения кэша, но никто не заморачивается почему-то особо, либо я не могу ничего найти, либо не делятся, либо не парятся https://en.wikipedia.org/wiki/Cache_replacement_policies https://github.com/paularmstrong/normalizr/issues/47 https://github.com/gaearon/flux-react-router-example/issues/30 https://github.com/gaearon/flux-react-router-example/issues/18 поделись плиз, если реализуешь) (у меня просто нет таких требований и я даже не заморачиваюсь (но задавался этим вопросом тоже, на всякий случай))

Ywein
11.02.2017
19:44:05
хм, я как то обычно привык пинать людей делающих апи чтобы они уже в нормализованном виде отправляли данные, это плохо?

или я вообще не понял о чем вы

Vasiliy
11.02.2017
19:45:50
это клево, это просто не всегда возможно)

Oleg
11.02.2017
19:46:36
а partial update как делаешь?

Ywein
11.02.2017
19:46:43
точнее про кэш и gc я точно не понял о чем вы. в каком это месте вообще нужно и зачем? я как то не задумывался о gc в реакте.

Vasiliy
11.02.2017
19:49:33
это не про реакт, но вот почитай, что в тех ишьюс чуваки спрашивают они беспокоятся о памяти, тк в normalizr не предусмотрено "удаление" чего-либо из "нормализованного хранилища" (ну, normalizr это просто пример) и им отвечают, чтобы они не парились

Ywein
11.02.2017
19:52:48
а partial update как делаешь?
ну в духе такого return {...state, data: [ ...state.data.slice(0, index), Object.assign({}, state.data[index], action.alert), ...state.data.slice(index + 1) ] } (надеюсь я правильно понял о чем мы)

Oleg
11.02.2017
19:55:28
я про то что вот ты вычитываешь список. там модель обкоцанная, потому что не надо полную подель в списке. Потом переходишь на запись, там вычитывается полная модель. Возвращаешься назад на список - возникает вопрос с partial update, потому что если без него то твоя полная модель, вычитанная раньше затрется

Vasiliy
11.02.2017
19:57:03
в real-world примере в redux репке даже затронут этот кейс (но наивно, просто именно как пример)

Oleg
11.02.2017
19:58:09
ну я про разные практики спрашиваю. кто как делает

Ywein
11.02.2017
20:00:03
Ну так Object.assign именно это и делает же.

пример. a = { 1: 'ccc', 2: 'aaa' } b = { 1: 'ddd', 2: 'ggg', 3: '222' } c = Object.assign({}, a, b) Object {1: "ddd", 2: "ggg", 3: "222"} f = Object.assign({}, c, {1: '111'}); Object {1: "111", 2: "ggg", 3: "222"}

Vasiliy
11.02.2017
20:02:11
скоро relay2 выйдет) https://zeemee.engineering/relay-2-simpler-faster-more-predictable-128769e72318#.4xsj54582

Andrey
11.02.2017
20:03:10
я еще в прошлом году слышал про это, но в репозитории тихо было

Aug 18, 2016

Google
Ywein
11.02.2017
20:04:42
что-то я как то relay не очень оценил. работать с их graphql не хочется, возможно я просто не понял в чем фишка, но для не-супер-больших сервисов аля фейсбук он выглядит весьма неудобным по сравнению с классическим rest. не говоря уж о том, что я в половине проектов сокеты использую.

Oleg
11.02.2017
20:07:18
все не так просто. Ты вычитал список а там уже все изменилось. Начинаешь мерджить с тем что у тебя сейчас есть и получаешь неконсистентные данные. Я думаю что можно решить двухходовкой - вначале вычитываешь по query идентификаторы выборки, затем по идентификаторам добавляешь состояние кеша и с сервера получаешь гибридную структуру где могут быть и обкоцанные модели и полные. Но такая схема - это два запроса на каждую коллекцию. Не гуд

Vasiliy
11.02.2017
20:09:27
да, мне тоже не зашел он, сложна (я про relay & graphql) + сервер свой

Oleg
11.02.2017
20:09:37
так orm работают

Oleg
11.02.2017
20:13:41
ты же не один. кто-то эту запись отредактировал. ты пошел на список и тебе пришли краткие модельки. ты смерджил и все, прихали. полные модели разошлись

Ywein
11.02.2017
20:20:50
но ты же данные из полных моделей в списке все равно не отображаешь

поэтому какая разница?

Oleg
11.02.2017
20:30:23
если закешированные данные не используются в каких-нибудь подковерных манипуляциях и если при переходе например на форму отдельной записи ты всегда фетчишь - может и нет

Ywein
11.02.2017
20:32:15
В последних проектах я эту проблему вообще решаю с помощью сокетов.

данные пушатся к юзеру когда они обновляются

Владимир
11.02.2017
20:32:45
Весь блок данных пушишь?

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