Использование параметра a, b
зависит от того, берет ли функция, которую вы пытаетесь выполнить, из охватывающей области или нет.
При создании функции, такой как
const signupCallback = email => {
return console.log(`sign up called with email ${email}`);
};
const memoizedsignupCallback = useCallback(() => {
signupCallback();
}, []);
В вышеприведенном случае memoizedsignupCallback
создается при первоначальном рендеринге, и он будет иметь доступ к значениям из закрывающего замыкания при его создании.Нет, если вы хотите получить доступ к значению, которое находится в его закрытии, но может быть обновлено из-за некоторого взаимодействия, вам нужно заново создать запомненный обратный вызов и, следовательно, вы передадите аргументы для использования CallCallback.
Однако в вашем случае значение, используемое memoizedsignupCallback
, передается вызывающей стороной при выполнении метода и, следовательно, будет работать правильно
DEMO