У меня проблема с передачей реквизита в реакции. Это моя структура папок:
источник
Составная часть
- Button.js
Контейнер
- PageContainer.js
Страница
- Page.js
Я использую Bootstrap 4 для создания кнопки в Button.js:
<div>
<a className="btn btn-primary sharp" href={this.props.url} role="button">{this.props.btnName}</a>
</div>
Ничего другого в классе Button нет. Итак, теперь я помещаю кнопку в класс PageContainer:
<div>
<Header/>
<Button url={this.props.urlBack} btnName="Back"/>
<Button url={this.props.urlNext} btnName="Next"/>
</div>
Как видите, я передал название кнопкам: Назад и Далее. Это прекрасно работает. Теперь я могу добавить URL-адрес, и он будет работать нормально, но это не то, что мне нужно.
Я добавил PageContainer в класс Page, чтобы добавить URL-адрес на этом уровне:
<div>
<PageContainer urlBack="/" urlNext="/nextPage"/>
</div>
По какой-то причине это не работает. Может кто-нибудь объяснить мне, как я могу передать реквизит от бабушки и дедушки к внуку? В документации написано, что так и должно быть. Я также не получаю никаких ошибок, потому что реквизит не передается из Page в PageContainer. console.log(this.props.urlBack) приводит к неопределенности.
PS: Может быть, вы спрашиваете, почему я использую Page.js или по какой причине у меня есть PageContainer. Во-первых: компонентов гораздо больше, я их просто не упомянул. Во-вторых: я хочу повторно использовать PageContainer для нескольких страниц, поэтому мне просто нужно изменить URL-адрес.