реагировать на встроенные функции стрелок и операторов if - PullRequest
0 голосов
/ 07 мая 2018

Я только что изучил функции стрелок и то, как они могут помочь с наглядностью, когда вы начинаете использовать подфункции, здесь: реагирует на собственные и глобально доступные объекты

Я не уверен, отличается ли это для утверждений "если", но я не могу заставить это работать вообще. Вопрос:

myFunction() {
    console.log('Welcome Flag: ' + this.props.welcomeFlag);
    if (this.props.welcomeFlag == false) {
        this.props.dispatch(setWelcomeFlag(true));
        showMessage('Welcome back, ' + this.props.userName + '!', { duration: 3000 });
    }
}

В этом примере консоль регистрирует начальное значение welcomeFlag, которое равно «false». Затем я хотел бы, если оно ложно, отобразить сообщение для пользователя и установить его в значение true. Супер простой материал.

Это падает здесь:

this.props.dispatch(setWelcomeFlag(true));

Потому что мой оператор if не является оператором со стрелкой.

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

Я попробовал ответы, перечисленные здесь:

как использовать условие if-else в функции стрелки в javascript?

Но ничего из этого не работает.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 07 мая 2018

myFunction() - функция уровня класса. Привязка чего-либо к this относится к самому классу, поэтому вам нужно привязать его к свойству this, иначе вы не сможете получить доступ к реквизитам уровня класса .

Хотя существует много способов связать это, как объяснено здесь , но самый простой из них - использовать синтаксис сокращенной стрелки как

myFunction = () =>
...