Реакция-роутер-дом Линк перезагружает сайт - PullRequest
0 голосов
/ 10 июля 2019

Я начал проект, который по сути построен так:

App.js
-> ListView.js
-> SingleEntryView.js
  -> (variable views using react router dom)
  -> NavComponent.js to switch between those views

Мои URL: www.my-site.com/entry/<ID>/<view> и www.my-site.com/list

На www.my-site.com/entries есть список всех записей, на www.my-site.com/entry/<ID>/<view> вы можете увидеть некоторые детали, которые зависят от <view>.

Кроме того, навигация по сути позволяет переключаться между видами. Поэтому для навигации требуется <ID>, например, для переключения. от www.my-site.com/entry/<ID>/details до www.my-site.com/entry/<ID>/history.


Мой подход

... начинается с использования маршрутизатора в компоненте App.js:

<Route exact path='/list/' component={ListView} />
<Route exact path='/entry/:id/:view' component={SingleEntryView} />

Затем в SingleEntryView.js у меня есть доступ к this.props.match.id, который я могу передать NavComponent для создания RouterDom-Links для разных представлений.

Я передаю матч следующим образом:

<NavComponent id={this.props.match.params.id} />

Затем My Navigation использует Router Links для перехода к различным представлениям, например так (используя материал ui):

<BottomNavigationAction
component={Link}
to={`/entries/${this.props.id}/details`}
label="details"
/>

Кроме того, я создал другой маршрут, чтобы решить, какой вид будет отображаться под навигацией, я сделал это следующим образом в SingleEntryView.js:

<Route path={`/entry/:id/detail`} component={DetailView}/>
<Route path={`/entry/:id/history`} component={HistoryView}/>
<Route path={`/entry/:id/foobar`} component={FooBarView}/>

Моя проблема

... означает, что когда я нажимаю на одну из этих ссылок в NavBar, представление полностью перезагружается, включая componentDidMount (все удаленное содержимое перезагружается). Как я могу предотвратить это? Я думал, что ссылка именно там, чтобы предотвратить это **?

P.S .: Я знаю, что это может быть не самое чистое решение - я новичок в реакции, поэтому, если у вас есть идея получше, дайте мне знать: D

П.П.С .: Я все немного упростила, если где-то есть опечатка: простите, пожалуйста: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...