код работает, но выдает: Ожидается назначение или вызов функции

avatar
DCR
8 апреля 2018 в 00:41
87
2
2

почему это вызывает ошибку неиспользуемого выражения?

<input style={{margin:'25px 50px 0',textAlign:'center'}}
       type='text' placeholder='add ToDo'
onKeyPress={e =>{(e.key ==='Enter' ? this.addTodo(e.target.value):null) }} />
Источник
Jack Dalton
8 апреля 2018 в 01:02
0

Можете ли вы отредактировать свой пост, чтобы включить сообщение об ошибке. Спасибо.

Ответы (2)

avatar
iceveda06
8 апреля 2018 в 01:03
1

Вы заключаете свою функцию в { }, но не возвращаете никакого значения. Удалите { }, и это должно работать, поскольку функция стрелки имеет неявное возвращаемое значение, иначе вам нужно использовать «return», чтобы вернуть ответ, если вы хотите обернуть его внутри { }.

Попробуйте это:

onKeyPress={e =>(e.key ==='Enter' ? this.addTodo(e.target.value):null) } />

Здесь дополнительная информация, прочитайте часть, связанную с темой «Тело функции» ближе к концу: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

avatar
JJPandari
8 апреля 2018 в 03:27
2

Ответ iceveda06 показывает, как это исправить, позвольте мне немного объяснить само это правило eslint:

Присваивания и вызовы функций имеют побочные эффекты (не совсем верно, пустая функция, например, не имеет побочного эффекта, но в случае вызываемая функция точно делает), что мы в конечном итоге и делаем при написании кода, с другой стороны, только выражения являются допустимыми утверждениями в javascript, например foo ? 1 : 2;, но большинство из них (кроме присваиваний и вызовов функций) не имеют побочного эффекта, поэтому не влияют на всю программу, поэтому не стоит считать их плохим кодом.

Отметьте этот вопрос, чтобы узнать, как отличить выражение от утверждения.