Я создаю веб-сайт конференции, используя три из этих вкладок (#speaker, #talks, #schedule).Я думаю, что справедливо хотеть взаимодействия между вкладками, вот пара вариантов использования, которые я не могу решить.
- На вкладке #talks я нажимаю на био-хеш - #johnsmith.Этот идентификатор существует на странице, но поскольку я сначала не переключаю вкладку на #speakers, ничего не отображается.
- Если я хочу сослаться на конкретную беседу и отправить кому-то URL-адрес: https://website.com #speaker_name вкладки не будут открываться, и ничего, кроме вкладок, не будет отображаться.
Проблема усугубляется тем фактом, что, когда я нажимаю на тег привязки href, используя '#id',Я должен перезагрузить страницу, чтобы она открылась.
Мне кажется, что должен быть какой-то способ передачи параметра при смене вкладки или что-то ... Я в трудном положениипотому что я выкатываю код, но очень нуждаюсь в этой функциональности.
Вот реальное хранилище с открытым исходным кодом - https://github.com/kernelcon/website. Код, на который я ссылаюсь, можно найти в src / pages / Agenda/.
Вот пример кода.
Agenda.js
<Tabs defaultTab={this.state.defaultTab}
onChange={(tabId) => { this.changeTab(tabId) }}
vertical={vert}>
<TabList vertical>
<Tab tabFor="speakers">Speakers</Tab>
<Tab tabFor="talks">Talks</Tab>
<span>
<TabPanel tabId="speakers">
<Speakers />
</TabPanel>
<TabPanel tabId="talks">
<Talks />
</TabPanel>
</span>
</Tabs>
Talks.js
changeTab(id) {
window.location.reload(false);
}
getTalks() {
// Order Alphabetically
const talksOrdered = speakerConfig.sort((a,b) => (a.title > b.title) ? 1 : ((b.title > a.title) ? -1 : 0));
const talks = talksOrdered.map((ele, idx) => {
const twitterUrl = ele.twitter.replace('@', '');
return (
<div id={ele.talk_id}
key={idx}
className='single-talk'>
<div className='talk-title'>{ele.title}</div>
<div className='talk-sub-title'>
<div className='speaker-name'>
<a onClick={() => {this.changeTab(ele.speaker_id)}}
href={`#${ele.speaker_id}`}>{ele.speaker}</a>
</div>
...