Size: a a a

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

2020 July 13

V

Valentin in React — русскоговорящее сообщество
как в styled-components добавить id к элементу?
источник

VO

Viktor Osipov in React — русскоговорящее сообщество
Иван
Ты намеренно разделил на две части цельный кусок логики, и ввёл пять пропов чтобы что? Чтобы заменить при необходимости источник данных/обработчиков? Компонент, который принимает вот это всё — вообще нихера не переиспользуемый. Хочешь вынести логику для переиспользования? Напиши хук useTodos, меняй внутри реализацию хоть по пять раз за коммит. Разделением логики работы компонента на два «независимых» компонента добьёшься ровным счетом ничего
Да, действительно. Спасибо, я понял, как можно сделать иначе...
На хуках и правда выглядит понятнее.
источник

V

Valentin in React — русскоговорящее сообщество
const El = styled.div`…`;
<El id=«3434» />
источник

K

Kirill in React — русскоговорящее сообщество
Valentin
как в styled-components добавить id к элементу?
export const Button = styled.button.attrs({
   id: 'айди',
})`
источник

V

Valentin in React — русскоговорящее сообщество
Kirill
export const Button = styled.button.attrs({
   id: 'айди',
})`
а если нужно через описание элемента? <El id={} />
источник

ТФ

Татьяна Фомина... in React — русскоговорящее сообщество
Иван
И зачем это нужно, если можно сделать то же самое кастомным хуком прямо а нужном компоненте? Чтобы описывать «тупые» компоненты, которые принимают три структуры и пять коллбэков? Они точно тупые в таком случае? Они же бессмысленны. А если у тебя нет TS с сигнатурами — так вообще пиздец, поди разбери, что за 5 пропсов принимает «тупой» компонент, как эти пропсы между собой связаны и как друг на друга влияют
кастомным хуком - который делает что?
источник

V

Valentin in React — русскоговорящее сообщество
Kirill
export const Button = styled.button.attrs({
   id: 'айди',
})`
или как это через пропсы написать?
источник

K

Kirill in React — русскоговорящее сообщество
Valentin
const El = styled.div`…`;
<El id=«3434» />
вообще кстати так тоже работает
источник

V

Valentin in React — русскоговорящее сообщество
Kirill
вообще кстати так тоже работает
вот нет, поэтому и спрашиваю)
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
https://codesandbox.io/s/presentational-and-container-components-q1vid

Попробую с примером.
У нас есть презентационный компонент App , отвечающий за UI и обработку событий на нём («лямбда-адаптер» в `onChange`).
Компонент App не знает об обработке данных, эту ответственность на себя берёт его родитель.

Можно реализовать два контейнера с говорящими названиями AppWithHooks и AppWithClass, который обрабатывают данные, получаемые от дочернего App.

Мы можем безболезненно для компонента App менять реализацию обработки данных: классы, хуки, редакс, локалсторедж - нас не волнует.
const App = ({ title }) => {
 const [query, onQueryChange] = useInputValue()
 const { todos, addTodo } = useTodos()

 const onClick = () => addTodo(query)

 // ...
}
источник

И

Иван in React — русскоговорящее сообщество
Татьяна Фомина
кастомным хуком - который делает что?
👆🏿
источник

И

Иван in React — русскоговорящее сообщество
Viktor Osipov
Да, действительно. Спасибо, я понял, как можно сделать иначе...
На хуках и правда выглядит понятнее.
Одним адептом контейнеров меньше, мне не показалось?) День прожит не зря!)
источник

K

Kirill in React — русскоговорящее сообщество
Valentin
вот нет, поэтому и спрашиваю)
это странно, я много где в styled напрямую атрибуты передаю
источник

V

Valentin in React — русскоговорящее сообщество
Kirill
это странно, я много где в styled напрямую атрибуты передаю
жесть
источник

ТФ

Татьяна Фомина... in React — русскоговорящее сообщество
Иван
👆🏿
а как же вся эта хурма про то, что данными, запросами данных и т.д. должен заниматься стейтменеджер?..
источник

V

Valentin in React — русскоговорящее сообщество
жесть, вот как элемент выглядит
источник

VO

Viktor Osipov in React — русскоговорящее сообщество
Иван
Одним адептом контейнеров меньше, мне не показалось?) День прожит не зря!)
Однозначно...
источник

V

Valentin in React — русскоговорящее сообщество
но <GridItem id=‘myId’ /> ничего
источник

VO

Viktor Osipov in React — русскоговорящее сообщество
Иван
Одним адептом контейнеров меньше, мне не показалось?) День прожит не зря!)
Получилось даже что-то типа такого... но в моей реализации я нигде в другом месте query не использую, поэтому засунул в хук...
https://codesandbox.io/s/hooksusetodo-ceiqj
источник

И

Иван in React — русскоговорящее сообщество
Татьяна Фомина
а как же вся эта хурма про то, что данными, запросами данных и т.д. должен заниматься стейтменеджер?..
А кто сказал, что внутри useTodos не вызывается useSelector+useDispatch из redux? Или useAtom+useAction из reatom? Или useStore из effector?)
источник