Danila
При чём тут this?
Danila
const [memoized, setMemoized] =useState(null); useEffect(()=>{ setMemoized(heavyLoad()) }, [deps]) Меняется на const memoized = useMemo(()=>heavyLoad(), [deps])
Sm•ok
Так, понял
Sm•ok
Ступил, спасибо)
Sm•ok
const [memoized, setMemoized] =useState(null); useEffect(()=>{ setMemoized(heavyLoad()) }, [deps]) Меняется на const memoized = useMemo(()=>heavyLoad(), [deps])
Memoized меняется в зависимости от чего либо зависящего (deps) и меняет значение Далее происходит реднер из-за смены deps?
Danila
В исходники его не лазил
Sm•ok
А где написано, что под капотом юсстейт?
Danila
Не нашел такое
Тебя сильно волнует что именно там триггерит рендер?
Danila
Работает оно интуитивно и понятно, какая разница за счёт чего, по-большому счёту?
Danila
Изменится значение мемо - получишь перерендер с новыми данными, так или иначе.
Sm•ok
Значит изменение мемо триггерит ререндер? Возник вопрос const [state, setState] = useState(0) Мемо хук зависит от state. При изменении стейта происходит перерендер, а например на расчёт нового значения мемо требуется время
Sm•ok
Будет 2 перерендера или один
Danila
Значит изменение мемо триггерит ререндер? Возник вопрос const [state, setState] = useState(0) Мемо хук зависит от state. При изменении стейта происходит перерендер, а например на расчёт нового значения мемо требуется время
При изменении стейта происходит вызов твоего компонента, соответственно, вызов useState() - игнорируется, уже есть стейт, берётся из имеющегося useMemo() - если изменились deps пересчитывается результат работы функции ( jsx) мапится в вдом и отправляется на рендер Юзмемо работает синхронно и сделан просто для того, чтобы завязать вычисление на депс и делать его (синхронно!) только тогда, когда депс изменились.
Danila
Насколько я понимаю.
artalar
Селекторы в testing-library как бы очень сильно подталкивают писать код семантический код с a11y - круто 🤔
Anonymous
круто круто
Evghenii
Изменение мемо не тригерит перерендер, мемо избавляет от новых вычислений, если зависимости не изменились
Danila
Если ты напишешь const notMemoized = heavyLoad(fromState)
Danila
То получишь то же самое с точки зрения логики "перерендеров"
Danila
То есть, их отстутсвие
Danila
Но функция будет вызываться каждый раз
Да. Ты пихаешь это в мемо чтобы каждый раз вызывался useMemo, но из-за механизма хуков, внутренности этого useMemo будут запущены толкьо если депсы изменились
Danila
Сам useMemo будет вызван, просто реакт знает, что делать с очередным вызовом хука
Sm•ok
Ну я понял, что он хранит старое значение и возвращает его
Sm•ok
Если зависимости не менялись
Sm•ok
Просто было интересно как дело с ререндерами обстоит. Спасибо
Danila
Он полагается на порядок вызова хуков в компоненте, и именно поэтому нельзя делать хуки условными - он или есть в компоненте, или его нет.
Danila
Иначе исчезновение вызова хука при очередном перерендере нельзя будет отработать - хз какой пропал и откуда.
Артем
Какую книгу лучше читать для изучения React?
Volodymyr
Какую книгу лучше читать для изучения React?
там доку перевели на русский
Артем
А книгу?
Volodymyr
зачем? посмотри видосов лучше, раз доку не желаешь
Andrey
А книгу?
а книгу художественную почитай лучше
Артем
Или в ней нет необходимости?
Andrey
если время девать некуда
Danila
А книгу?
Книгу по библиотеке с тремя функциями в апи?
Danila
Или в ней нет необходимости?
В книге по реакту - нет. По общему программированию/архитектуре/парадигме - есть
S
книги обычно зэки спрашивают
Anonymous
тут понятно для чего stop
не совсем. расскажешь ? )
Danila
что посоветовал бы почитать?
Хз, eloquent javascipt, как стандартный совет
Артем
https://www.youtube.com/playlist?list=PLcvhF2Wqh7DNVy1OCUpG3i5lyxyBWhGZ8
А этот курс стоит смотреть?
Dmitry
не совсем. расскажешь ? )
там билеты частями отдают и ты получаешь части пока стоп тру не будет
Dmitry
юзер почти сразу все увидит
Dmitry
но для усложнения сервер может еще и ошибку дать вот и все
Anonymous
всем привет)
Andrey
не совсем. расскажешь ? )
костыльный метод побить ответ на чанки т.е. клиент ответ на запрос запрашивает асинхронно 1 часть, 2 часть, ..., пока не приедет стоп
Dmitry
стоп тру
Andrey
мб решили не усложнять тестовое сокетами а мб им в авиасейлс просто нравится переписывать существующие технологии, хз
Anonymous
ок. спасибо
Bohdan
Что может генерировать директивы @font-face? В исходниках нигде нет, а в билде оно есть
Anonymous
хм
Сергей
подскажите что это значит? return <> … < /> именно пустые теги
Сергей
React.Fragment
а для чего?
BARSOOQUE
Это значит что все что между ними прямо вставится
Anonymous
React.Fragment
красивый
BARSOOQUE
Без обертки
Nikita
а для чего?
у тебя компонент в реакте должен возвращать одну ноду, и чтобы не оборачивать в реальный html element, можешь оборачивать во фрагмент
Сергей
спасибо
Anonymous
?
ничего... забудь...
Nikita
ага кажется разобрался
попробуй вернуть 2 элемента, тебе реакт ошибку выплюнет
Anonymous
можно еще массив использовать
Anonymous
элементов
Nikita
элементов
а зачем ? и каким образом ?