Реагируйте на неявный возврат в onClick

0

Вопрос

Так что я видел это в кодовой базе в последнее время. Неявный возврат из onClick

<Button onClick={() => history.push('/urlTing') }>
   Ting
</Button>

Это что, большое "нет-нет"? Или так лучше? Любой вклад здесь будет оценен по достоинству. И то, и другое, по-видимому, обеспечивает желаемое поведение.

Очевидно, вот как это выглядит без неявного возврата.

<Button onClick={() => {
   history.push('/urlTing'); 
}}>
   Ting
</Button>

ecmascript-6 javascript reactjs
2021-11-23 15:57:42
3

Лучший ответ

1

Это не имеет никакого значения. Если вы не хотите неявного возврата при сохранении однострочного формата, используйтеvoid ключевое слово:

<Button onClick={() => void history.push('/urlTing') }>
   Ting
</Button>
2021-11-23 17:27:54

это правда???
peter flanagan

1

В неявном возврате нет ничего плохого. То onClick возвращаемое значение обработчика событий не используется react. Согласно документам https://reactjs.org/docs/handling-events.html

Еще одно отличие заключается в том, что вы не можете вернуться false чтобы предотвратить поведение по умолчанию в React. Вы должны позвонить preventDefault явно.

Поэтому не имеет значения, что возвращает ваш обработчик или возвращает ли он вообще что-либо.

2021-11-23 16:01:20
1

Создание обратного вызова для каждого рендеринга внутри разметки само по себе не является лучшей практикой. Возвращаясь к вопросу: основное различие, как вы упомянули, заключается в возвращаемом значении. Я сомневаюсь, что onClick API от React никогда не изменится. Но если в будущем ожидается какое - то возвращаемое значение-вот где вы можете попасть в некоторые неприятности, если что-то вернете.

Эмпирическое правило: если вас не просят что - то вернуть- не делайте этого.

2021-11-23 16:05:00

Я ценю, что вы указали, что это не очень хорошая идея, чтобы встроить это в рендеринг.
Daniel Beck

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................