@react_js

Страница 1654 из 5115
Vladimir
08.07.2017
18:17:53
Даже стоп, нет

Не перерисуются

kana
08.07.2017
18:18:35
Не поможет при компонентах-функциях

Google
Vladimir
08.07.2017
18:18:39
Если грамотно разбить и сделать pure рендер

Roman
08.07.2017
18:18:46
Заметь тогда, что при изменении любой книги у тебя перерисуются все остальные
то, что перерисуется мне не особо страшно (элементов немного на экране будет) Мне скорее хочется сделать, чтобы было удобно

Vladimir
08.07.2017
18:18:57
Roman
08.07.2017
18:19:03
и все это в контексте react-native

kana
08.07.2017
18:19:07
Я к тому, что мб лучше каждую книгу в отдельный коннект по ее id

Хм, вот про рекомпос не подумал

Да, хм, можно тогда денормализованный список вытаскивать из стора

И если ничего сложного делать не нужно, то можно и не нормализовать даже

Roman
08.07.2017
18:21:23
т.е state.users: [{name: 'Igor', books: [1,2,3]}] state.books[{id: 1, name: 'First'}, ...] var books = state.books.filter(book => state.user.books.contains(book.id)) ?

andretshurotshka?❄️кде
08.07.2017
18:21:47
нет

kana
08.07.2017
18:21:59
Мапом

booksIDs.map(bookID => state.books[bookID])

Но вообще все еще зависит от того, какая api

Google
andretshurotshka?❄️кде
08.07.2017
18:23:10
users: { ids: [...], byId: { ... } } books: { ids: [1], byId: { ..., 1: { ... } } }

kana
08.07.2017
18:23:48
Хранить ids совсем не обязательно же, он чисто для сохранения ордера

А если нет ids, то и byID можно перенести на уровень выше

Дмитрий
08.07.2017
18:24:16
Ещё чтобы итерироваться быстро

kana
08.07.2017
18:24:30
Ну да, но ему это не нужно же

Roman
08.07.2017
18:24:36
зачем ids и byId? 0_0 Почему просто не массив с пользователеми или книгами?

kana
08.07.2017
18:24:39
Ему нужно вывести одного юзера

И его книги, массив книг в самом юзера

В массиве сложны и неэффективны операции доступа по id, удаления и редактирования

Roman
08.07.2017
18:27:30
можете посоветовать эталонный по вашему мнению проект с редаксом? (если это еще будет и реакт-нейтив, то вообще супер, хотя это не особо важно)

в первую очередь интересует скорость разработки и удобство

скорость работы не важна

Rei
08.07.2017
19:04:12
hui

shadowjack
08.07.2017
19:05:48
rei

Rei
08.07.2017
19:21:30
hi

shadowjack
08.07.2017
19:46:11
Или не нужно )
Или не осенит

kana
08.07.2017
20:00:05
Как вариант, он может приложение и не напишет

Nikita
08.07.2017
20:01:08
народ, а смотрите, у меня приложение, где в куче мест используется инфа о, например, юзерах. На сколько норм практика прокинуть в контекст users: Map<id, User> и не париться с прокидыванием пропсов? какие есть подводные камни?

Google
Yui
08.07.2017
20:01:55
А Redux не для этого нужен?

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

но вообще компоненты нужно делать как можно тупее, так что нужно вникать в архитектуру твоего приложения

Nikita
08.07.2017
20:02:49
не, он использует контекст для стейта, где нужно ты себе выборку делаешь. а я даже в тупых компонентах буду на это расчитывать

Yui
08.07.2017
20:03:39
Просто заставлять компонент не просто отображать, а ещё и разбираться в структуре данных для отображения это так себе

Nikita
08.07.2017
20:04:55
с одной сторны - да. с другой у меня в куче мест есть Array<id>, которые либо мэпить до передачи в компонент, либо уже в самом компоненте

Yui
08.07.2017
20:05:34
На мой взгляд правильнее мэпить до передачи

и если что навешивать нужные функции через React.cloneElement

Тут другое дело в том, хочется ли с этим заморачиваться, если так всё организовывать, то времени больше уйдёт и стоит ли это того

shadowjack
08.07.2017
20:09:45
Зависит от того, будет у тебя проект неделю жить или год.

Nikita
08.07.2017
20:12:57
Зависит от того, будет у тебя проект неделю жить или год.
проект уже живет больше года. но все больше мест, где этот маппинг приходится заранее делать и это геморой

Nikita
08.07.2017
20:17:28
для чего?

Sergey
08.07.2017
20:18:07
Для юзера. Стоп. А как же редакс?

Nikita
08.07.2017
20:20:15
ок, давай расскрою мысль) у меня приложение - чат. а теперь представь вот этот чат, в котором мы общаемся. У тебя есть аватарка, у меня есть аватарка. есть имя и прочая инфа о юзерах. У каждого сообщения есть sender/author, как хочешь назови. Вот где делать мэппинг uid -> User ?

shadowjack
08.07.2017
20:21:02
А тебе для чего нужен uid?

И что есть User?

Dmitry
08.07.2017
20:22:35
Почему этот маппинг не сделать через мидлвару в нетворк слое ?

Sergey
08.07.2017
20:24:40
Ммм, расскажи, что такое мэпинг

Перебор и изменение массива функцией map ?

Google
Dmitry
08.07.2017
20:26:01
Перебор и изменение массива функцией map ?
[{id,…}….].reduce((acc,el)=>{acc[el.id]= el; return acc},{})

вот это я думаю он имел ввиду

Nikita
08.07.2017
20:29:14
маппинг - это когда есть одна сущность и ты ее преобразуешь в другую

Admin
ERROR: S client not available

Nikita
08.07.2017
20:29:36
было uid: 1, стало user: {id: 1, ...}

Почему этот маппинг не сделать через мидлвару в нетворк слое ?
потому что юзеры могут меняться. если хочется реактивных обновлений, надо маппить реактивно

Dmitry
08.07.2017
20:30:54
Есть два мепа, ты смерджил два мепа и реакт обновил только там где поменялось.

Dmitry
08.07.2017
20:33:02
Есть два мепа, ты смерджил два мепа и реакт обновил только там где поменялось.
А вообще без модели данных redux/mobx таким лучше не заниматься.

Roman
08.07.2017
20:33:19
Просто не используй редакс, обходись одним состоянием компонента, и однажды тебя осенит для чего нужно использовать редакс
я понимаю, для чего нужен редакс, но не понимаю, как его нормально использовать. Во всех предыдущих приложениях использовал схему с выделением в сторе отдельного стейта для selectedUsers и тп Те не отдельное хранилище, которое содержит всех пользователей или все книги, как мне посоветовали выше, а просто отдельный стейт, с которым удобно работать. Нужен список книг - загружаешь и кладешь в state.currentBookList. Смотришь список другого пользователя - стираешь стейт и записываешь новые книги. Накладно с точки зрения производительности и траффика, зато удобно. Думал, что что-то делаю неправильно и есть какая-то убойная техника, которая позволяет УДОБНО менеджить такие ситуации, но похоже, что нет

Nikita
08.07.2017
20:33:21


вот смотри, тут тебе нужно сразу знание о двух юзерах

если это мапить в списке сообщений - тебе на каждое изменение юзера надо весь список мэпить. а так только нужные сообщения

Dmitry
08.07.2017
20:34:38
на добавление новых юзеров ты мепишь их в {id: {…}} и мерджишь с общим стором

Nikita
08.07.2017
20:36:05
на добавление новых юзеров ты мепишь их в {id: {…}} и мерджишь с общим стором
у тебя список из 1000 сообщений. ты предлагаешь пройтись и в каждом обновить юзера?

Google
Nikita
08.07.2017
20:36:37
я просто этот самый маппинг думаю вынести в момент рендера компонента

Dmitry
08.07.2017
20:36:37
Dmitry
08.07.2017
20:36:57
и есть компонент который по айдишке юзера отображает этого юзера

Sergey
08.07.2017
20:37:05
Нет, сделай это в компоненте выше, и передай обработаный массив во вью

Nikita
08.07.2017
20:37:07
ну вот так я и хочу сделать)

Dmitry
08.07.2017
20:37:08
т.е берет из стора и по айдишке и отображает

ТАК ДЕЛАЙ

Sergey
08.07.2017
20:38:00
на мой взгляд это дорого
На мой взгляд у нас слишком мало инфы чтоб об этом судить

Dmitry
08.07.2017
20:38:29
на мой взгляд это дорого
крч просто возьми редукс и nomalizr,а не эти костыли

Nikita
08.07.2017
20:39:38
редукс есть, реселект есть, нормализр не понимаю как поможет. вы не понимаете, что речь идет о списке

Group Butler
08.07.2017
20:40:35
Rei, this type of media is not allowed in this chat. (1/3)

Sergey
08.07.2017
20:40:50
Хех)

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