【发布时间】:2021-04-06 08:14:30
【问题描述】:
我想将路由添加到我的画廊。我在我的页面上使用 Bootstrap 选项卡,每个选项卡都有一个用于不同类别图片的不同轮播。我想添加路由,这样用户就不会下载所有图片而是只下载他选择的部分。
所以我使用 Tab.Container、Tab.Content、Tab.Pane 的方法。当用户选择每个链接时,#category 会添加到链接中,但我的 Route 不会加载组件,甚至不会呈现简单的文本。不知道怎么回事。
幻灯片使用适当的 eventKey 包装在 Tab.Pane 中。
图库内容代码:
import {Link, Switch, Route, useRouteMatch} from 'react-router-dom';
import Tabs from 'react-bootstrap/Tabs';
import Tab from 'react-bootstrap/Tab';
import SchodySlideShow from './../../components/Slideshows/SchodySlideshow';
import PlytkiSlideShow from './../../components/Slideshows/PlytkiSlideshow';
import BalkonSlideShow from './../../components/Slideshows/BalkonSlideshow';
import OtherSlideShow from './../../components/Slideshows/OtherSlideshow';
import { Nav } from 'react-bootstrap';
const Gallery = () =>{
let match = useRouteMatch();
return (
<React.Fragment>
{/*
The old version how it was done (and it worked)
<Tabs >
<Tab eventKey="Schody" title="Schody" className="tab-panel">
<SchodySlideShow />
</Tab>
<Tab eventKey="Płytki" title="Płytki" className="tab-panel">
<PlytkiSlideShow />
</Tab>
<Tab eventKey="Balkony" title="Balkony" className="tab-panel">
<BalkonSlideShow />
</Tab>
<Tab eventKey="Specjalne Zamówienia" title="Specjalne Zamówienia" className="tab-panel">
<OtherSlideShow />
</Tab>
</Tabs>
*/}
<Tab.Container defaultActiveKey="schody">
<Nav>
<Nav.Item>
<Nav.Link eventKey="schody" as={Link} to={`${match.url}#schody`}>Schody</Nav.Link>
</Nav.Item>
<Nav.Item>
<Nav.Link eventKey="balkony" as={Link} to={`${match.url}#balkony`}>Balkony</Nav.Link>
</Nav.Item>
<Nav.Item>
<Nav.Link eventKey="plytki" as={Link} to={`${match.url}#plytki`}>Płytki</Nav.Link>
</Nav.Item>
</Nav>
</Tab.Container>
<Tab.Content>
<Switch>
<Route path={`${match.url}#schody`} component={SchodySlideShow} />
<Route path={`${match.url}#balkony`} component={BalkonSlideShow } />
<Route path={`${match.url}#plytki`} component = {PlytkiSlideShow} />
</Switch>
</Tab.Content>
</React.Fragment>
);
}
export default Gallery;
【问题讨论】:
-
仅更改片段 (
#) 可能不会触发页面更改。 -
如果您希望引导选项卡不加载所有选项卡的内容,您可以使用
mountOnEnter属性。 -
@shaedrich,请发布正确的答案,以便解决这个问题。
-
@Kacz,请拨打tour 了解本网站的运作方式。
标签: javascript reactjs react-router-dom react-bootstrap