@react_js

Страница 2410 из 5115
kana
25.10.2017
18:51:13
мало того, используя экшоны, ты отвязываешь свой бизнес-логик-код от того, как выглядит стейт

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

или поменять структуру редьюсеров

Google
kana
25.10.2017
18:51:50
экшоны не поменяются

экшоны это как API твоего хранилища

интерфейс

Dmitry
25.10.2017
18:52:27
У меня с таким подходом вышла небольшая проблема

Слишком много екшонов диспатчатся в редукс

kana
25.10.2017
18:53:02
это решается через трандьюсер filter

решается - это круто сказано конечно)

на самом деле это будет много бойлерплейта. Но перформанс возрастет

Дмитрий
25.10.2017
18:53:42
типа третим аргументом
А что может вытворять коннект из react-redux — ууу?

Andrey
25.10.2017
18:54:11
А нук
За этим лучше в доку.

kana
25.10.2017
18:54:12
я помню, когда-то очень давно читал код react-redux и там все просто и красив

зашел полгода назад, а там пиздец

Google
Дмитрий
25.10.2017
18:54:24
Ага

Невероятноек количество вариантов работы)

Dmitry
25.10.2017
18:54:39
За этим лучше в доку.
Та я шарю, но просто иногда интересные подходы кто-то использует

Alex
25.10.2017
18:54:51
я представляю экшон как единственный модификатор стейта с единственным результатом, разве когда один экшон меняет стейт в разных местах это не увеличивает сложность отладки и не повышает вероятность непредвиденных изменений?

kana
25.10.2017
18:55:47
экшон - не модификатор, это просто какое-то сообщение, он может и стейт не менять в принципе

Дмитрий
25.10.2017
18:56:01
На заметку взял приём когда мы в коннекте забираем id из initialProps и возвращаем функцию, чтобы делать выборку из стейта больше не сверяясь с ownProps вообще

kana
25.10.2017
18:56:25
пример пожалуйста, на словах я ничего не понял

Dmitry
25.10.2017
18:56:33
да пример

Дмитрий
25.10.2017
18:56:37
Ну типичный кейс такой, ща

Dmitry
25.10.2017
18:57:06
А типа рантайм селектор от айди

Дмитрий
25.10.2017
18:57:19
Наоборот не рантайм

Dmitry
25.10.2017
18:57:22
(

жаль, а то мне пригодилось бы

А то я фигачу селекторы через пропсы (

kana
25.10.2017
18:58:25
я представляю экшон как единственный модификатор стейта с единственным результатом, разве когда один экшон меняет стейт в разных местах это не увеличивает сложность отладки и не повышает вероятность непредвиденных изменений?
вот пример, тут сразу три редьюсера подписаны на один и тот же экшон. В одном месте мы меняем статус загрузки, в другом добавляем айдишки в массив, в третьем в объект добавляем значения



селекторы, зависимые от пропсов - вообще больная для меня тема

Dmitry
25.10.2017
18:59:55
Кстать мне еще вот такой концепт понравился const initialState = createState({ users: [], genderFilter: null, filteredUsers({ users, genderFilter }) { return users.filter(user => !genderFilter || user.gender === genderFilter); }, totalPosts({ filteredUsers }) { return filteredUsers.reduce((sum, user) => sum + user.postsCount, 0); } }) // Create a new state, updating 'users' value const newState = initialState.copy({ users: [ { name: 'John Doe' , gender: 'M', postsCount: 10 }, { name: 'Jane Doe' , gender: 'F', postsCount: 5 }, { name: 'Alan Turing' , gender: 'M', postsCount: 15 }, { name: 'Ada Lovelace' , gender: 'F', postsCount: 16 } ] })

с селекторами

kana
25.10.2017
19:00:34
ух

Google
Alex
25.10.2017
19:00:50
экшон - не модификатор, это просто какое-то сообщение, он может и стейт не менять в принципе
но общее назначение именно в том чтобы что-то произошло или нет, других входов в стейт нет? тем более если вы пишите что экшоны это по сути api, с чем я согласен

kana
25.10.2017
19:01:05
ну так экшоны может слушать не только стор

а всякие мидлвары типа thunk/saga, а стор их можно игнорить

Alex
25.10.2017
19:02:08
я не отказываюсь от экшенов вообще, но те что меняют стор я пишу так как скинул

Дмитрий
25.10.2017
19:05:07
пример пожалуйста, на словах я ничего не понял
Есть какой-то список в стейте и в компонент прокидываются его id чтобы он сидел там себе выбирал что ему нужно Обычный вариант const connect(({ list }, { id }) => ({ data: list.get( id ) }) Минусы — постоянно сверяется с ownProps Альтернатива const connect((initialState, initialProps) => { const { id } = initialProps return (state) => ({ data: list.get( id ) }) }

Многим знакомо по идее но почему то в реальности почти никогда не используется)

kana
25.10.2017
19:06:02
ну, тут есть учет, что id никогда не поменяется)

Dmitry
25.10.2017
19:06:26
А профит только в том что проверки с ownProps не будет ?

Дмитрий
25.10.2017
19:06:51
ну, тут есть учет, что id никогда не поменяется)
Даже если тебя угораздило сделать обратное, то у тебя по прежнему есть довольно много подходящих пропсов))

Alex
25.10.2017
19:07:03
по сути, у меня всё тот же экшон, но reducer in action, я всегда знаю как изменится стор, вместо того чтобы подписывать сторы на экшены, я меняю стор там где это нужно за 1 раз. Как это может стать боком в будущем?

kana
25.10.2017
19:08:02
ну как можно сделать, вроде // selectors const itemById = createSelectors( items, (state, props) => props.id, (items, id) => items[id] ); // component const mapStateToProps = createStructuredSelector({ item: itemById });

Дмитрий
25.10.2017
19:09:23
Самая жесть дальше)

connectAdvanced

Dmitry
25.10.2017
19:10:45


хм, а создавать сдесь селекторы

решает проблему с динамическими селекторами

и не надо как пропсы их

Play
25.10.2017
19:11:07
@reactnative_ru
там уже) спасибо!

Дмитрий
25.10.2017
19:11:13
Dmitry
25.10.2017
19:11:15
блин, я даже не знал что есть такое

Google
Play
25.10.2017
19:13:28
Почему по центру не встает селектор? Куда уже только не вставлял justifyContent: 'center' <div style={{ flex:1, justifyContent: 'center' }}> <form style={{ width: 87 }}>



Alex
25.10.2017
19:14:07


Dmitry
25.10.2017
19:15:17
А что за датабейс и почему ты это делаешь в селекторе ?

Play
25.10.2017
19:16:34
если селектор inline, то не встанет
селектор из этой либы https://www.muicss.com

Dmitry
25.10.2017
19:16:35
Блин я до сих пор думаю про фектори для коннекта, это ж сколько говнокода я мог избежать

Alex
25.10.2017
19:16:41
датабейс это обёртка для извлечения данных, структура стейта примерно такая { database:{ faculties[]; lecturers[]; } } так же обёртка сохраняет типы и я могу рефакторить бд по всему коду без копипаста

Dmitry
25.10.2017
19:16:41
если бы юзал раньше

kana
25.10.2017
19:17:21
это все равно не решение для пропсов, которые меняются

Дмитрий
25.10.2017
19:17:34
Там есть mergeProps

Третий параметр

Alex
25.10.2017
19:17:46


kana
25.10.2017
19:18:06
шарпера видно издалека

Alex
25.10.2017
19:18:34
это все равно не решение для пропсов, которые меняются
это решения для вывода списков по айди, для избежания ре-рендера при обновлении какого либо из элементов, для остальных случаев не подойдёт

Dmitry
25.10.2017
19:19:15
Третий параметр
так мердж вызывается постоянно же ?

Alex
25.10.2017
19:19:53


как решить добавление / удаление я не понял, видимо онли полным ре-рендером

Google
Alex
25.10.2017
19:21:18
либо, 2 варианта, создавать контейнер каждый раз для добавленного элемента, а для удалённого, занулять значение или ставить флаг, чтобы сам элемент не рендерился

Дмитрий
25.10.2017
19:22:47
так мердж вызывается постоянно же ?
Ну строго говоря не обязательно)

Четвёртым аргументом коннект принимает опции, в числе которых может быть собственная проверка на наличие изменений пропсов, стейта и merge по отдельности

Dmitry
25.10.2017
19:25:56
в теории ты должен в елемент только айди передать

Alex
25.10.2017
19:27:04
у меня есть элемент-список, рендерит список элементов, список подписан на переменную-массив с айдишниками, а элементы на элементы массива в стейте данных

речь о том, что будет перерендер элемента-списка

а это цикл по элементам, и суть в том, что добавив 1 элемент, придётся пройтись по всему списку

как я понял реакт оптимизирует всё дело и в дом уйдёт только diff, но проход по списку и проверка элементов на изменение тоже потребует время как и сравнение виртуального дома

Triple
25.10.2017
20:11:14
Есть какая-нибудь хорошая ui библиотека для реакта?

Irina
25.10.2017
20:12:23
semantic-ui

Triple
25.10.2017
20:15:09
semantic-ui
Какой-то он страшненький

Wise
25.10.2017
20:15:46
React semantic-ui :)

Irina
25.10.2017
20:16:16
David
25.10.2017
20:16:38
Какой-то он страшненький
ну тут либо страшенький, либо удобненький

Triple
25.10.2017
20:16:55
Ant как-то по-приятнее....

Default
25.10.2017
20:17:04
Ант?

Уахахахха

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