Pull to refresh

Comments 2

Но еще из любопытного, можно вставлять и совсем не props, например ref или же вообще какой-нибудь window.location.pathname:

Не делайте так, если не хотите долгого неочевидного дебага!
Чтение чего либо, кроме props, state и context в теле компонента — это сайдэффект и должно происходить в use(Layout)Effect.


Во первых, ваш компонент может не знать об изменении значения произвольной рефки (например, если она спускается пропсом глубже) или компонент может не подписываться на событие popState и соответственно не отреагировать на изменение window.location. Это приведет к stalled эффекту — использованию протухших значений из замыкания.
Во вторых, такой код сломается при серверном рендеринге.
Любое чтение из "окружающего мира" (ref.current это тоже зачастую кусочек окружающего мира) надо делать в эффектах.

Неоправданно мало комментариев под такой интересной статьей - видимо, редкая птица может долететь до середины такой реки ))

Sign up to leave a comment.

Articles