Size: a a a

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

2020 July 28

AS

Andrey Sorokin in React Native — русскоговорящее сообщество
Кто подскажет как вот это запустить?) Веб вив не справлется! ШАрик не крутится. http://examples.webglearth.com/#helloworld
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Ок, и что там можно делать? (в ф-ции, которая в useEffect передается)
Из очевидного - менять локальный стейт, делать асинхронный запросы. То есть, делать то в общем то можно все, но лучше избегать вызова функций, переданных в пропсы, чтобы избежать ошибок, как в этом примере
источник

AN

Andrei Nikitin in React Native — русскоговорящее сообщество
общее правило это тоже самое что и в componentDidUpdate
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Vladimir Kurchatkin
Из очевидного - менять локальный стейт, делать асинхронный запросы. То есть, делать то в общем то можно все, но лучше избегать вызова функций, переданных в пропсы, чтобы избежать ошибок, как в этом примере
Всё, что вы перечислили, это вызов коллбэков. Ф-ция переданная в пропсы ничем от них не отличается, кроме того, что может обновиться при ререндере.
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Vladimir Kurchatkin
Из очевидного - менять локальный стейт, делать асинхронный запросы. То есть, делать то в общем то можно все, но лучше избегать вызова функций, переданных в пропсы, чтобы избежать ошибок, как в этом примере
Скажем, так useEffect больше адаптирован к условно идемпотентным эффектам - получить некие данные, синхронизировать стейт и т д
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Всё, что вы перечислили, это вызов коллбэков. Ф-ция переданная в пропсы ничем от них не отличается, кроме того, что может обновиться при ререндере.
Именно это приводит к ошибке. А фундаментальное отличие - это как раз идемпотентность
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Тут тонкая грань, и иногда может и быть юз кейс для подобного - но нужно внимательно очень это делать
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Поэтому rule of thumb - коллбэки событий должны вызываться из коллбэков событий
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Vladimir Kurchatkin
Поэтому rule of thumb - коллбэки событий должны вызываться из коллбэков событий
Тогда коллбэков событий не существует в мире функциональных компонентов ) Замкнутый цикл. Но они существуют, что означает, что это не может быть "правилом"
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Тогда коллбэков событий не существует в мире функциональных компонентов ) Замкнутый цикл. Но они существуют, что означает, что это не может быть "правилом"
Конечно существуют.
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Просто они как раз в основном и исходят из колбэков "фундаментальных" компонентов
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Vladimir Kurchatkin
Скажем, так useEffect больше адаптирован к условно идемпотентным эффектам - получить некие данные, синхронизировать стейт и т д
Если я правильно понял - "идемпотентный", это св-во означающее, что при повторном применении результат будет тот же. Но для любых эффектов это не так, иначе это не эффект, а просто редьюсер.
И я не понимаю, что такое "условно идемпотентный эффект" 😄
источник

A

Arczi in React Native — русскоговорящее сообщество
elo, народ подскажите какой нить хороший курс по анимациям в рн что бы понять как правильно писать
источник

AN

Andrei Nikitin in React Native — русскоговорящее сообщество
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Если я правильно понял - "идемпотентный", это св-во означающее, что при повторном применении результат будет тот же. Но для любых эффектов это не так, иначе это не эффект, а просто редьюсер.
И я не понимаю, что такое "условно идемпотентный эффект" 😄
Редьюсеры чистые и не имеют эффектов.

Вот идемпотентый эффект:

React.useEffect(() => {
  setState(1);
})


Вот неидемпотетный эффект:

React.useEffect(() => {
  setState(v => v + 1);
})
источник

A

Arczi in React Native — русскоговорящее сообщество
thx
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Если я правильно понял - "идемпотентный", это св-во означающее, что при повторном применении результат будет тот же. Но для любых эффектов это не так, иначе это не эффект, а просто редьюсер.
И я не понимаю, что такое "условно идемпотентный эффект" 😄
Что такое "условно" - хороший вопрос) Например получение данных с бэка. Данные могли измениться, поэтому повторный запрос не гарантирует того же результата. Но если абсрагироваться от содержимого данных, а учитывать только тот факт что мы их получили, и мы не изменили состояние сервера - то это идемпотентная операция
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Vladimir Kurchatkin
Редьюсеры чистые и не имеют эффектов.

Вот идемпотентый эффект:

React.useEffect(() => {
  setState(1);
})


Вот неидемпотетный эффект:

React.useEffect(() => {
  setState(v => v + 1);
})
Теперь понятно. Но первый пример бессмысленнен, он обычным редьюсером выражается. Он ни от чего не зависит (ну только от setState, но он гарантировано не меняется). И следовательно там вообще эффект не нужен.
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Gena Black
Теперь понятно. Но первый пример бессмысленнен, он обычным редьюсером выражается. Он ни от чего не зависит (ну только от setState, но он гарантировано не меняется). И следовательно там вообще эффект не нужен.
Ну это минимальный пример просто
источник

VK

Vladimir Kurchatkin in React Native — русскоговорящее сообщество
Концептуальныо эффекты реагируют на данные, а не на события
источник