Я прочитал документацию по пользовательским хукам React , и меня немного смущает, как / когда они вызываются.
- Вызываются ли они при каждом обновлении вызывающей функции / компонента, например
useEffect
, то есть при монтировании компонента выполняется рендеринг и т. Д. c? - Пример, который они приводят, похоже, подразумевает, что пользовательский хук вызывается каждый раз, когда изменяется параметр - их пример: *
и они говорят
Если мы выберем другого друга и обновим переменную состояния получателя, наш хук useFriendStatus отменит подписку на ранее выбранного друга и подпишется на статус нового выбранного.
Так что это что-то вроде (или точно так же) параметров, которые вы передаете в массиве, который является вторым параметром useEffect
, то есть, если какой-либо из параметров, передаваемых в ваш пользовательский хук, изменится, то хук снова вызывается?
Наконец - и это может быть глупый вопрос, простите меня - любое состояние, которое существует внутри крючка, исчезает сразу же после его возвращения, как нормальная функция (которая, конечно, это)? Я понимаю, что любое состояние, созданное в пользовательском хуке с useState
, является локальным для вызывающего компонента, то есть локально для пользовательского хука, но если вы вернули из хука функцию set
, созданную внутри хука, было бы что-нибудь установить? Подойдет ли закрытие? (Я не уверен, почему вы это сделаете, но мне просто любопытно, поскольку смысл эффектов, кажется, снимает побочные эффекты, и мне было интересно, можете ли вы сделать это с помощью пользовательских хуков, если по какой-то причине вы выбрал).
function useKludge(something) {
const [isSomething, setIsSomething] = useState(something);
return setIsSomething;
}
Спасибо за любую помощь!
* (Я вставил изображение, потому что SO не позволяет мне правильно форматировать код для какая-то причина)