Size: a a a

React — русскоговорящее сообщество

2020 July 16

OT

Oruj Tatiyev in React — русскоговорящее сообщество
export default - зло is the side effect
Например есть такой путь
state.loyalty.calculation.purchase.bonuses.applied

Надо запросить оттуда данные в 10 компонентах, везде будешь писать так?
useSelector(state => state.loyalty.calculation.purchase.bonuses.applied)

Или может создать 1 раз функцию и писать нормально?
useSelector(loyaltySelectors.appliedBonuses)

Не может быть опечаток / не надо лазать по другим компонентам чтобы скопировать
При изменении структуры стора надо поменять путь всего в 1 месте
И из этого еще куча плюсов вытекает
спасибо, но мне кажется не стоит меня так нагружать. в доках react-redux показывают примеры
const {totalCapital, availableFunds, investments} = useSelector(state => state.common);
правда, без {...}
источник

ei

export default - зло... in React — русскоговорящее сообщество
ну да, дерьмовая дока
источник

ei

export default - зло... in React — русскоговорящее сообщество
Сомневаюсь что они в фейсбуке такую лапшу городят) Хотя может и городят, чтобы часиков побольше набивать на поддержке
источник

ei

export default - зло... in React — русскоговорящее сообщество
Oruj Tatiyev
спасибо, но мне кажется не стоит меня так нагружать. в доках react-redux показывают примеры
const {totalCapital, availableFunds, investments} = useSelector(state => state.common);
правда, без {...}
Ну, будешь писать точно как у них в примере этом, потом нарвешься на кучу проблем, предупреждение
источник

OT

Oruj Tatiyev in React — русскоговорящее сообщество
export default - зло is the side effect
Ну, будешь писать точно как у них в примере этом, потом нарвешься на кучу проблем, предупреждение
но я так понял, дело не в производительности, а в именовании переменных? хотя кто то выше написал что я выгружаю все хранилище этим селектором
источник

OT

Oruj Tatiyev in React — русскоговорящее сообщество
export default - зло is the side effect
Ну, будешь писать точно как у них в примере этом, потом нарвешься на кучу проблем, предупреждение
а вот сам редакс)
источник

ei

export default - зло... in React — русскоговорящее сообщество
Oruj Tatiyev
но я так понял, дело не в производительности, а в именовании переменных? хотя кто то выше написал что я выгружаю все хранилище этим селектором
Ок, еще один прикол, при любом изменении внутри state.common будет ререндер, вне зависимости от того используешь ли ты в компоненте свойство которое изменилось
источник

ei

export default - зло... in React — русскоговорящее сообщество
Oruj Tatiyev
но я так понял, дело не в производительности, а в именовании переменных? хотя кто то выше написал что я выгружаю все хранилище этим селектором
И именование переменных тут не при чем, это гораздо большее чем просто именование
источник

F

Fake Cop in React — русскоговорящее сообщество
Есть главный функциональный компонент, в котором я получил данные из стейта с помощью useSelector
В нем же есть дочерние компоненты:

1- Отрисовывает колонки
 {card  && card.map((item, index) => <Column key={index} column={item} />)}

2- форма, которая эти колонки добавляет(Диспатч я прокинул в форму, он нормально отрабатывает в redux dev tools изменения в стейт добавляются)
 <FormAddColumn addColumn={onClickAddColumn} />
 const onClickAddColumn = useCallback(
   (column) => {
     dispatch(addColumn(column));
   },
   [dispatch]
 );

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

ei

export default - зло... in React — русскоговорящее сообщество
Fake Cop
Есть главный функциональный компонент, в котором я получил данные из стейта с помощью useSelector
В нем же есть дочерние компоненты:

1- Отрисовывает колонки
 {card  && card.map((item, index) => <Column key={index} column={item} />)}

2- форма, которая эти колонки добавляет(Диспатч я прокинул в форму, он нормально отрабатывает в redux dev tools изменения в стейт добавляются)
 <FormAddColumn addColumn={onClickAddColumn} />
 const onClickAddColumn = useCallback(
   (column) => {
     dispatch(addColumn(column));
   },
   [dispatch]
 );

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

OT

Oruj Tatiyev in React — русскоговорящее сообщество
export default - зло is the side effect
И еще по тому же принципу нельзя делать такие селекторы

const appliedBonuses = state => state.loyalty.calculation.purchase.bonuses.applied
const collectedBonuses = state => state.loyalty.calculation.purchase.bonuses.collected


Так как если например если loyalty заменится на bonusProgram, надо будет менять в куче мест
Поэтому все выносится в функции, и селектор знает только об одной/нескольких таких функциях

const loyalty = state => everything(state).loyalty
const loyaltyCalculation => state => loyalty(state).calculation
const purchaseCalculation => state => loyaltyCalculation(state).purchase
const calculatedBonuses = state => calculatedBonuses(state).bonuses
есть где то статья? я бы переписал
источник

ei

export default - зло... in React — русскоговорящее сообщество
Oruj Tatiyev
есть где то статья? я бы переписал
Зачем статья? О чем? Я уже все написал)
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
Oruj Tatiyev
есть где то статья? я бы переписал
источник

DP

Dmitry Petrov in React — русскоговорящее сообщество
вот крутая статья про нюансы работы с кешем, не уверен, что вся переведена
источник

ТФ

Татьяна Фомина... in React — русскоговорящее сообщество
export default - зло is the side effect
И еще по тому же принципу нельзя делать такие селекторы

const appliedBonuses = state => state.loyalty.calculation.purchase.bonuses.applied
const collectedBonuses = state => state.loyalty.calculation.purchase.bonuses.collected


Так как если например если loyalty заменится на bonusProgram, надо будет менять в куче мест
Поэтому все выносится в функции, и селектор знает только об одной/нескольких таких функциях

const loyalty = state => everything(state).loyalty
const loyaltyCalculation => state => loyalty(state).calculation
const purchaseCalculation => state => loyaltyCalculation(state).purchase
const calculatedBonuses = state => calculatedBonuses(state).bonuses
подскажи, плиз ,если у меня вот такие селекторы, как их правильно переписать?
import { useTypedSelector } from "src/useTypedSelector";

export const usersSelector = () =>
 useTypedSelector((state) => state.users.items);

export const errorSelector = () =>
 useTypedSelector((state) => state.users.error);

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

AN

Artem Nemtsev in React — русскоговорящее сообщество
Друзья, почему может dom дерево не реагировать на изменение состояния?
При событии клика сам стейт обновляется, однако selected={el} так и остается false
const [selected, setSelected] = useState<Array<boolean>>((new Array(25)).fill(false));
————
{(selected.map((el, i) =>
   <Field
       key={i}
       selected={el}
       onClick={() => setSelected(selected => {
           selected[i] = true;
           return selected;
       })}
   ></Field>
))}
источник

ei

export default - зло... in React — русскоговорящее сообщество
Татьяна Фомина
подскажи, плиз ,если у меня вот такие селекторы, как их правильно переписать?
import { useTypedSelector } from "src/useTypedSelector";

export const usersSelector = () =>
 useTypedSelector((state) => state.users.items);

export const errorSelector = () =>
 useTypedSelector((state) => state.users.error);

вынести отдельный селектор для юзеров, и от него уже брать селекторы для айтемов и ошибки?
const users = state => state.users
const items = state => users(state).items
const error = state => users(state).error
источник

ТФ

Татьяна Фомина... in React — русскоговорящее сообщество
export default - зло is the side effect
const users = state => state.users
const items = state => users(state).items
const error = state => users(state).error
падажжи. а откуда брать state?
источник

ei

export default - зло... in React — русскоговорящее сообщество
Татьяна Фомина
падажжи. а откуда брать state?
???
источник

G

GetMad in React — русскоговорящее сообщество
Пацаны, а есть какой то гайд, как лучше организовать хендлинг евентов в приложениях с оче высокой интерактивностью? Редакторы там всякие например
источник