ответить на useEffect: значения внешней области видимости, такие как authService._user, не являются допустимыми зависимостями, поскольку их изменение не приводит к повторной визуализации компонента. - PullRequest
1 голос
/ 03 октября 2019

Я хочу использовать useEffect, чтобы проверить, выполнил ли пользователь печать имени пользователя в меню. но я получаю это предупреждение:

React Hook useEffect имеет ненужную зависимость: 'authService._user'. Либо исключите его, либо удалите массив зависимостей. Значения внешней области видимости, такие как 'authService._user', не являются допустимыми зависимостями , поскольку их изменение не приводит к повторному рендерингу компонента response-hooks / respashly-deps

это моеuseEffect в navbar :

    useEffect(() => {
    setUsername(authService._user.username);
}, [authService._user])

, и это мой пример службы авторизации:

interface User {
username: string;
password: string;
}
export class AuthorizeService {
_user: User = {
    username: '',
    password: ''
};
_isAuthenticated = false;

isAuthenticated() {
    return this._isAuthenticated;
}

Authenticate(username: string, password: string) {
    this._isAuthenticated = true; //I will add fetch latter here
    this._user =  {
        username: username,
        password: password
    }
}
}

const authService = new AuthorizeService();

export default authService;

btw все отлично работает, но в консоли есть предупреждение.

мой вопрос: это правильный способ сделать это? и почему есть предупреждение.

1 Ответ

1 голос
/ 03 октября 2019

Этот массив нужно заполнять только в том случае, если он исходит от реквизита.

Взгляните на https://en.reactjs.org/docs/hooks-effect.html в разделе «Совет: оптимизация производительности за счет пропуска эффектов»

Но я предлагаю прочитать всю документацию об useEffects, там есть некоторые важные детали и краткая документация.

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