Ivan
Я тебе говорю, что хуки на замыканиях
Боюсь, что ваши аргументы основаны на неполных данных. Притом что со своей точки зрения вы, безусловно, правы.
Александр
Кажется, я понимаю, из чего вы исходите в своих суждениях. С этой точки зрения всё логично.
Я не холливара если что спорю, самому интересно прояснить вопросы некоторые, возможно мое представление не совсем верно
Anonymous
Боюсь, что ваши аргументы основаны на неполных данных. Притом что со своей точки зрения вы, безусловно, правы.
Если обладаешь более полными знаниями - делись а я готов принять свои пробелы в знаниях
Dmytro
Всем привет Нужно оформить Storybook для нескольких репозиториев (несколько фронтов с повторяющемися компонентами). Попытался сделать отдельный репозиторий для Storybook и добавить эти фронты в виде git submodules, но это оказалось не оч удобно (нужно инсталить зависимости для сабмодулей + их же в руте Storybook для импорта компонент, и в итоге это все равно не заводится) Может ли кто-то поделиться своим опытом? Ссылку на репу или статью, или хотя бы простое объяснение Спасибо
Dmytro
по-моему надо наоборот сделать отдельный нпм пакет с повторяющимися компонентами и подключить его во все проекты
Скорее всего так и будет, для повторяющихся. Но предполагается что в Storybook будут отображены не только повторяющиеся компоненты, но и уникальные для каждого проекта. Самый логичный способ это использовать именно git submodules, ибо в таком случае нужно будет просто подтягивать изменения и имплементить новые страницы в доке
Igor
А причем тут порядок вызова?
afaik, так правильно диспетчеризуются данные - те ты допустим два useState пишешь, Fiber должен понимать какие данные в первому useState вернуть, а какие второму при каждому вызове функционального компонента. Именно поэтому хуки должны быть вызываемо только на top-level и их нельзя скажем вызывать внутри циклов
Igor
Внутри это через очерди реализовано, когда компонент маунтиться создает очередь нод хуков для него
Александр
И не вызваться в условных выражениях и так далее, то есть порядок важен, ибо на него опирается рантайм реакта
Александр
На самом деле важно не столько чтобы хуки вызывались на топ левеле, это как раз не обязательно, важнее чтобы порядок и число их вызовов в компоненте не зависело ни от props ни от чего другого и оставалось неизменным на протяжении жизни компонента
Mishka
всем привет! Я вот работаю с реактом и никак понять не могу почему все так стремятся засунуть css в js чтобы наплодить еще больше лапши в компоненте, вместо того чтобы использовать отдельный файл со стилями и импортировать его в компонент
Mishka
у меня возникла проблема с тем, что мои стили не инкапсулируются, а мешать слонов с мухами тоже не хочется. css-modules не работает если в проекте используется sass
Ilya
да и зачем sass?
Mishka
Может пересмотреть подход? Что значит не инкапсулируются? Можете подробнее о проблеме?
все стили внутри проекта глобальные даже если компонент не используется на странице
Александр
все стили внутри проекта глобальные даже если компонент не используется на странице
Ну так зачем делать глобальными скажем стили для кнопки, поместите их внутрь компонента кнопки
Ilya
всем привет! Я вот работаю с реактом и никак понять не могу почему все так стремятся засунуть css в js чтобы наплодить еще больше лапши в компоненте, вместо того чтобы использовать отдельный файл со стилями и импортировать его в компонент
styled components в первую очередь привлекают возможностью выводить стили или их параметры в рантайме из контекста выполнения JS второй фактор - это условная опциональность, т.е. config/option-based описание универсальных компонентов конфигурируемых полностью при декларации вызова (сторонний css в данном случае это side effect)
artalar
Что бы одни и те же хуки можно было использовать многократно в компоненте реакт под капотом хранит их очередь. Но что нужно что бы хуки впринципе можно было использовать? т.е. что бы при вызове функции внутри тела функции компонента был доступ к стейту именно к той и только той ноды, которая сейчас в вдоме представлена? Т.е. как из глобальной функции use* можно получить доступ к стейту в замыкании? Ну прикол в том что хуки имеют доступ, условно, к глобальной переменной, которая каждый раз меняется до и после вызова функции рендера, в которой как раз содержится информация релевантная для текущей вдом ноды
Ilya
памагити
а в чем именно проблема?
artalar
можно
Mishka
Ну так зачем делать глобальными скажем стили для кнопки, поместите их внутрь компонента кнопки
потому что стили просто ипортируются в файл компонента через import "./style.css" это дает возможность их использовать, но они от этого становятся глобальными
Александр
А собственно о чем мы спорим, я уже успел забыть
artalar
функция не знает на что ссылается хук во время вызова и никак это не контролирует
artalar
ну хотя это все … не важно
Mishka
а в чем именно проблема?
не получается прикрутить готовые sass стили к компоненту так, чтобы они не были глобальными и при этом сохранить возможность наследования
Mishka
эт если грубо
Александр
ну хотя это все … не важно
Мы начинаем обсуждать уже детали реализации, полагаю для обычной работы с реактом это не нужно
Ilya
не получается прикрутить готовые sass стили к компоненту так, чтобы они не были глобальными и при этом сохранить возможность наследования
стоит пересмотреть подход к стилям и компонентам. Если есть цель изолировать стили то о наследовании речи и не идет.
Ilya
не получается прикрутить готовые sass стили к компоненту так, чтобы они не были глобальными и при этом сохранить возможность наследования
зачем вообще пытаться переопределить или унаслеловать какие то врутрении стили компонента?
artalar
@pavel_xpr вам в @javascript_jobs
Ilya
@pavel_xpr вам в @javascript_jobs
дак там про вордпресс)
artalar
точно не сюда
Pnvsky#
спасибо. 🙂
Mishka
зачем вообще пытаться переопределить или унаслеловать какие то врутрении стили компонента?
я наверное выразился неправильно css-modules мне предлагает написать import styles from 'style.css' <div className={style.div}> <p>some text</p> </div>
Mishka
зачем вообще пытаться переопределить или унаслеловать какие то врутрении стили компонента?
под наследование я имею ввиду то, что мне не надо писать styles.p если внутри scss я стилезую p после div
Mishka
div { p {color: red} }
Kostya
всем привет у меня вопрос по хукам. я могу изменять локальные переменные внутри useCallBack ?
Mishka
Надеюсь стало понятней
Ilya
div { p {color: red} }
а зачем писать стили на тегах?
Mishka
а зачем писать стили на тегах?
замените теги на то, что вам удобно
Александр
всем привет у меня вопрос по хукам. я могу изменять локальные переменные внутри useCallBack ?
Можете, если вы про setState, да и не про него если то тоже можете
Mishka
а зачем писать стили на тегах?
например .article { article__text { color: p} }
Ilya
замените теги на то, что вам удобно
ок - заменяю на классы. Юзаю styles.parrentClass и styles.childClass. хотя зачем вобще юзать какскад не очень понятно
Ilya
всем привет у меня вопрос по хукам. я могу изменять локальные переменные внутри useCallBack ?
локальные для функции коллбэка ? ну т.е. при его вызове... кароче переменные из какого контекста вы имеете в виду ? Можете вы изменять - вопрос только в том на какие значения замыкания в коллбэк у вас пойдут.
Kostya
локальные для функции коллбэка ? ну т.е. при его вызове... кароче переменные из какого контекста вы имеете в виду ? Можете вы изменять - вопрос только в том на какие значения замыкания в коллбэк у вас пойдут.
let onChange = event => { let { x, y } = sizer(event); let value = { x: getValue(width, x), y: getValue(height, y) }; setPoint(value); }; let sizer = null let refCallBack = useCallback(node => { if (node !== null) { let bound = node.getBoundingClientRect(); sizer = getSizer(bound) } }, []);
Ilya
всем привет у меня вопрос по хукам. я могу изменять локальные переменные внутри useCallBack ?
Если вам нужна переменная мутация которой не будет вам пулять рендер (ака в классовой модели использовали свойства класса) создавайте вашу переменную в useRef и эту переменную устанавливайте как опцию обновления для useCallback таким образом при вызове коллбэка всегда сможете работать с актуальным ее состоянием
Ilya
зачем?
Александр
И изменяйте
Ilya
так вот каскад и хочется заюзать как раз
Если у вас стили для одного компонента, котроые подрузмевают изоляцию то зачем еще и каскад?
Albert
Всем привет, скажите видео, чтобы учить react на английском или русском нет разницы
Denis
Всем привет, скажите видео, чтобы учить react на английском или русском нет разницы
видео чтобы учить react на английском или русском нет разницы
Alexey
видео чтобы учить react на английском или русском нет разницы
может он после "скажите" запятую подразумевал
Albert
Или книги чтобы учить react
Alexey
пришел за советом в реакт сообщество
Aram
Реактивно токсичное
Albert
Видео
Да Арам Джан
Denis
Всем привет, скажите видео, чтобы учить react на английском или русском нет разницы
https://lmgtfy.com/?q=%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE+%D1%87%D1%82%D0%BE%D0%B1%D1%8B+%D1%83%D1%87%D0%B8%D1%82%D1%8C+react+%D0%BD%D0%B0+%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%BC+%D0%B8%D0%BB%D0%B8+%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%BE%D0%BC+%D0%BD%D0%B5%D1%82+%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D1%8B
Mishka
Если у вас стили для одного компонента, котроые подрузмевают изоляцию то зачем еще и каскад?
мне кажется мы не оч понимаем друг друга мой идеальный вариант это определить какой-то baseClass скажем article внутри стилей написать .article { &__text {color: red} &__link { color: blue &__image { width: 50%} } } внутри компонента import style from "styles.scss const article = () => { return ( <div className={styles.article}> <p className-"article__text"></p> <a className="article__link"> <img className="article__link__image"/> </a> </div> ) } суть в том, что мне не хочется запихивать стили внутрь файла с логикой и шаблоном (css-in-js) но и css-modules мне не подходят потому что у меня уже готовые стили с каскадом как быть ?(
Kostya
тут код читать не реально - выкладывайте примеры на какой ни будь codesandbox.io
я хочу создать функцию которыя будет определять отсительное тположение мыши на компоненте. как мне использовать хуки?
Александр
я хочу создать функцию которыя будет определять отсительное тположение мыши на компоненте. как мне использовать хуки?
Относительно чего? В голову приходит хук который принимает ref на элемент относительно которого будет вычисляться положение, внутри заводим стейт под положение мыши и вещаем событие на mousemove, ну и в обработчике вычисляем относительные координаты и пишем их в стейт, но только наверное надо некий debounce предусмотреть, иначе поток обновлений будет большой. И это не просто функция будет а хук.