Я полагаю, что именно так они обеспечивают возможность повторного использования по сравнению с Link
компонентом react-router
или, возможно, любым другим Link
компонентом, который вы хотите использовать! то, что мы в основном имеем:
// react-router/Link
<Link to="/about">About</Link>
Что они имеют в NavLink
:
<Tag {...attributes} ref={innerRef} onClick={this.onClick} className={classes} />
Где {...attributes}
будет любым другим свойством, отличным от: className, cssModule, active, tag, innerRef
, потому что они уничтожены реквизитом.
Итак, причина, по которой они это сделали.
- Им было необходимо / предоставлено
onClick
свойство для компонента Link
. - Они есть собственный стандарт для стиля оформления
className={classes}
И одна из самых важных вещей в React - это возможность многократного использования компонента, то есть принцип DRY применяется в этом вопросе, потому что, Представьте, что у вас нет NavLink
компонента, и вы хотите добавить onClick
опору для Link
компонента, когда это необходимо, тогда вам придется носить его везде, где вы go:
onClick(e) {
if (this.props.disabled) {
e.preventDefault();
return;
}
if (this.props.href === '#') {
e.preventDefault();
}
if (this.props.onClick) {
this.props.onClick(e);
}
}
Сокращение это: все это ради DRY Принцип