При использовании функции setState из useState в качестве аргумента в useEffect, почему не требуется писать callBack - PullRequest
0 голосов
/ 14 июля 2020

Когда я использую функцию из моего компонента в аргументах useEffect, насколько я понимаю, я должен написать callBack, чтобы он запомнился и использовался как зависимость от useEffect, в противном случае появляется предупреждение, но когда я использую setState of useState, почему Нет необходимости писать обратный вызов. Запоминается по умолчанию? Как setState of useState работает иначе, чем метод в моем компоненте?

const [username, setUsername] = useState(undefined)
const [password, setPassword] = useState(undefined)

const onSuccessfulLogin  = useCallback((data, token) => {
    setUsername('')
    setPassword('')
    setUser(data)
    setAuth(token)
},[setUsername, setPassword])

useEffect(() => {
    onSuccessfulLogin()
},[onSuccessfulLogin])

1 Ответ

1 голос
/ 14 июля 2020

когда я использую setState для useState, почему нет необходимости писать обратный вызов

Потому что он гарантированно возвращает стабильную ссылку на функцию между отрисовками. И плагин rules of hooks lint знает об этом, поэтому он позволяет вам опустить его из массива зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...