Функция стрелки не должна возвращать присваивание no-return-assign - PullRequest
1 голос
/ 03 мая 2019

Мой код работает правильно в приложении, однако, до того, как запустится commit husky и выдает ошибку с сообщением «Функция Arrow не должна возвращать присваивание no-return-assign»

           <Field name='dob' label='dateOfBirth'
              placeholder=''
              onFocus={(e) => e.target.placeholder = 'MM/YYYY/DD'}
            />

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Как отмечают несколько человек в комментариях, проблема в том, что вы используете

(e) => e.target.placeholder = 'MM/YYYY/DD'

, что примерно эквивалентно

anon_func = function (e) {
    return e.target.placeholder = 'MM/YYYY/DD';
}

, поскольку (args) => <expression> означает оценку выраженияи вернуть результат.

Вопреки ответу jakemingolla, это является законным;он возвращает 'MM / YYYY'DD', что не имеет значения в этой ситуации, так как вас не волнует возвращаемое значение.Вот почему это "работает".Но это обычно считается плохим стилем, поэтому ваши проверки перед фиксацией помечают его.

То, что вы хотите, это (args) => {<function-body>}, который (как и любое другое тело функции, объявленное напрямую) просто возвращает undefined, если вы не используетеявно не вернуть что-то.То есть

(e) => {e.target.placeholder = 'MM/YYYY/DD';}

примерно так же, как

anon_func = function (e) {
    e.target.placeholder = 'MM/YYYY/DD';
}

, то есть то, что вы хотите.

0 голосов
/ 03 мая 2019

Если вы опустите скобки в своей функции стрелки, она неявно вернет оператор.В этом случае компилятор предупреждает вас о том, что вы возвращаете присваивание, что недопустимо (я полагаю, чтобы избежать ситуации, когда вы пытаетесь проверить на равенство, и по ошибке введите только один = вместо ===)

Вы можете заключить тело функции в скобки, чтобы избежать этой проблемы:

onFocus={(e) => { e.target.placeholder = 'MM/YYYY/DD'} }

Ознакомьтесь с MDN для получения дополнительной информации о функциях стрелок.

...