Javascript 反应路由器4渲染错误的路由?
我遇到了一个小问题。我有Javascript 反应路由器4渲染错误的路由?,javascript,reactjs,ecmascript-6,react-router,Javascript,Reactjs,Ecmascript 6,React Router,我遇到了一个小问题。我有Root组件,其中包含Switch和两个Route。当用户加载我要呈现初始的页面时,此路由包含一个组件,其中路由指向我要显示的库。 当用户单击图像时,路线会发生变化,并根据路线变化生成另一组图像。这正如预期的那样有效。但是当使用根目录中的第二个时,路径会改变,但会呈现初始值。由于路径不匹配,即使画廊也不会渲染,但会渲染标题和标题。怎么做 class Root extends Component { render() { return ( <d
Root
组件,其中包含Switch
和两个Route
。当用户加载我要呈现初始
的页面时,此路由包含一个组件,其中路由指向我要显示的库。
当用户单击图像时,路线会发生变化,并根据路线变化生成另一组图像。这正如预期的那样有效。但是当使用根目录中的第二个
时,路径会改变,但会呈现初始值。由于路径不匹配,即使画廊也不会渲染,但会渲染标题
和标题
。怎么做
class Root extends Component {
render() {
return (
<div>
<Navigation />
<Switch>
<Route component={Home} path="/" />
<Route component={Login} exact path="/login" />
</Switch>
<Footer />
</div>
);
}
}
类根扩展组件{
render(){
返回(
);
}
}
初始路线内的路线
class Home extends Component<Props> {
_scrollDown = event => {
event.preventDefault();
this.gallery.scrollIntoView({ behavior: 'smooth' });
};
render() {
return (
<div>
<Header onClick={event => this._scrollDown(event)} />
<HeaderAbout />
<Route
render={props => (
<div
ref={node => {
this.gallery = node;
}}
>
<RelayGallery {...props} />
</div>
)}
path="/home/:galleryRef?"
/>
</div>
);
}
}
class Home扩展组件{
_向下滚动=事件=>{
event.preventDefault();
this.gallery.scrollIntoView({behavior:'smooth'});
};
render(){
返回(
此。_向下滚动(事件)}/>
(
{
this.gallery=节点;
}}
>
)}
path=“/home/:galleryRef?”
/>
);
}
}
像这样更改它
<Route component={Login} exact path="/login" />
<Route component={Home} path="/" />
交换机是唯一的,因为它以独占方式呈现路由。在里面
相比之下,与位置匹配的每个对象都以包含方式渲染
您可以保留您的路线结构,只需将“精确”道具添加到主组件路线。然后路由器将只渲染具有确切“/”路由的组件。谢谢!我不知道交换机内部的声明顺序很重要,但现在有了意义:)