Size: a a a

2020 November 22

МА

Максим Ахмеров... in pro.js
Есть там последовательность и ее нельзя нарушать, пример обычный, несколько компонентов  рендерят друг друга и в каждом из них есть хук
источник

МА

Максим Ахмеров... in pro.js
Под последовательностью я имею в виду последовательность вызовов хуков
источник

EP

Evgenii Popov in pro.js
Максим Ахмеров
Под последовательностью я имею в виду последовательность вызовов хуков
Конечно могу ошибаться, но...
При чём 2 компонента? Если 2 компонента... и один компонент зависит от наличия данных в другом - то это просто наличие данных. Сами по себе компоненты должны быть атомарны и зависеть только от передаваемых в них данных.

Вы же говорите о последовательности вызова хуков. Хуки принадлежат только одному компоненту. У другого они свои. Вы можете передавать значения и/или функции из одного компонента в другой при помощи props или контекста, в случае передачи функции - это callback от другого компонента (внутри нового и он будет действовать на тот от кого передали, а не где вызвали). При чём тут последовательность вызова хуков реакта не понимаю? Можно пример?
источник

МА

Максим Ахмеров... in pro.js
А причем тут пропсы и колбеки вообще? Где я про них писал? Я про последовательность вызовов хуков спрашивал, а ты про другое пишешь
источник

МА

Максим Ахмеров... in pro.js
я спросил что именно нарушается при неправильной последовательности вызова хуков, а в итоге ты мне отвечаешь "При чём тут последовательность вызова хуков реакта не понимаю?"
источник

ma

max axenov in pro.js
Хуки разные бывают, как там вообще может быть некая последовательность?
Привели пример, или покажи где написано про "порядок вызова"
источник

МА

Максим Ахмеров... in pro.js
max axenov
Хуки разные бывают, как там вообще может быть некая последовательность?
Привели пример, или покажи где написано про "порядок вызова"
про порядок вызова написано в правилах хуков в доке
источник

МА

Максим Ахмеров... in pro.js
я не приводил пример, тк думаю, что любой, кто работал с хуками, сталкивался с правилами хуков, когда вызывал их в условных рендерах
источник

EP

Evgenii Popov in pro.js
Максим Ахмеров
я не приводил пример, тк думаю, что любой, кто работал с хуками, сталкивался с правилами хуков, когда вызывал их в условных рендерах
А при чём тут последовательность? В документации написано, что в рендере нельзя вызывать хуки, также как переопределять стейт классовых компонентов по причине того, что эти действия вызывают перерендер - и получится бесконечный цикл.
источник

ma

max axenov in pro.js
Ну то в каком порядке вызываются хуки решает разраб, исходя из бизнес логики.
Там написано, что нельзя вызывать хуки не на верхнем уровне.
В принципе это довольно очевидно и я даже ни разу не пробовал так делать.

Если так сделать, то будет просто неконтролируемое поведение компонента. В принципе в доке это описано.

Я работал и работаю с хуками, но я не сталкивался с этим, потому что это абсурдная идея, пихать useeffect куда то.
Это как пихнуть метод жизненного цикла куда то
источник

МА

Максим Ахмеров... in pro.js
Evgenii Popov
А при чём тут последовательность? В документации написано, что в рендере нельзя вызывать хуки, также как переопределять стейт классовых компонентов по причине того, что эти действия вызывают перерендер - и получится бесконечный цикл.
ты походу не всю доку прочитал
источник

МА

Максим Ахмеров... in pro.js
max axenov
Ну то в каком порядке вызываются хуки решает разраб, исходя из бизнес логики.
Там написано, что нельзя вызывать хуки не на верхнем уровне.
В принципе это довольно очевидно и я даже ни разу не пробовал так делать.

Если так сделать, то будет просто неконтролируемое поведение компонента. В принципе в доке это описано.

Я работал и работаю с хуками, но я не сталкивался с этим, потому что это абсурдная идея, пихать useeffect куда то.
Это как пихнуть метод жизненного цикла куда то
вот, меня как раз интересует это неконтролируемое поведение, как именно реакт хранит состояние хуков в компоненте, ты сказал про доку, можешь кинуть ссылку
источник

МА

Максим Ахмеров... in pro.js
ты скорее всего про объяснение правил хуков говоришь, но там я ответа тоже не нашел
источник

EP

Evgenii Popov in pro.js
Максим Ахмеров
ты походу не всю доку прочитал
Ну раз раз всё знаешь... покажи где ошибка в рассуждениях? Что подразумеваешь?
источник

МА

Максим Ахмеров... in pro.js
Максим Ахмеров
я спросил что именно нарушается при неправильной последовательности вызова хуков, а в итоге ты мне отвечаешь "При чём тут последовательность вызова хуков реакта не понимаю?"
почему Макс понял о чем я говорю, а ты нет...
и тут я указал, где ошибка в рассуждениях
источник

EP

Evgenii Popov in pro.js
Максим Ахмеров
почему Макс понял о чем я говорю, а ты нет...
и тут я указал, где ошибка в рассуждениях
У него написано тоже самое. Только он пошел с правила - перефразирую на документацию Используйте хуки только на верхнем уровне , Не используйте хуки внутри циклов, условных операторов или вложенных функций. А я написал, что произойдет на примере useState или setState (для классовых компонентов) - если их использовать в момент рендера.
Так что не так?
источник

EP

Evgenii Popov in pro.js
В циклах нельзя использовать тот же useState для одного состояния - по причине того, что useState это 'асинхронная операция'... которая заполнят какой то буфер и выполняется потом. Какое значение из буфера будет принято - реакт гарантий дать не может
источник

МА

Максим Ахмеров... in pro.js
Evgenii Popov
У него написано тоже самое. Только он пошел с правила - перефразирую на документацию Используйте хуки только на верхнем уровне , Не используйте хуки внутри циклов, условных операторов или вложенных функций. А я написал, что произойдет на примере useState или setState (для классовых компонентов) - если их использовать в момент рендера.
Так что не так?
во-первых, прочти еще раз свой ответ, там ты спросил  " причем тут последовательность хуков",  затем прочитай доку по правилам хуков, там явно говорится про последовательность вызова хуков, поэтому я делаю вывод, что доку ты не всю прочтиал
источник

МА

Максим Ахмеров... in pro.js
Evgenii Popov
В циклах нельзя использовать тот же useState для одного состояния - по причине того, что useState это 'асинхронная операция'... которая заполнят какой то буфер и выполняется потом. Какое значение из буфера будет принято - реакт гарантий дать не может
во-вторых, с чего ты взял, что useState это асинхронная функция?
источник

EP

Evgenii Popov in pro.js
Максим Ахмеров
во-вторых, с чего ты взял, что useState это асинхронная функция?
Пусть будет асинхронная в кавычках.
const [a,setA] = useState()'
setA("a")
// и сразу
console.log(a)
Что выведет console.log() ?
источник