我最近在我的路由中实现了反应路由器开关组件,以便呈现一个NoMatch组件(这只是一个404错误组件)。然而,在我的路由中实现这一点后,我注意到在我的主页上只有一个组件会呈现,标题组件。
标题和搜索栏都应该呈现到相同的路径。
我的代码如下:
const routes = [
{
path: "/",
exact: true,
component: () => <Heading />
},
{
path: "/",
exact: true,
component: () => <SearchBar />
},
{
component: NoMatch
}
];
class App extends Component {
render() {
return (
<div>
<BrowserRouter>
<div>
<MenuBar />
<Switch>
{routes.map((route, index) =>
<Route
key={index}
path={route.path}
exact={route.exact}
component={route.component}
/>
)}
</Switch>
</div>
</BrowserRouter>
</div>
);
}
}
我注意到如果我删除了Switch组件,那么一切都会渲染得很好,但是NoMatch组件也会渲染到路由。
问题:为什么我不能在交换机内部的同一路径上渲染多个组件?当我需要在“/”路径上呈现标题和搜索栏组件时,如何解决此问题?
Switch组件只允许一条路由-基本上每个子路由都有一个隐式的exact
属性。
所以你需要为了你的目的移除它,你的实验证实了这一点
我想你错过了开关的工作原理。
Switch将开始寻找匹配的路由,每当它找到匹配时,它将停止寻找匹配并呈现该特定组件。
始终定义唯一的路由,如果要为同一路径渲染多个组件,请使用div包装所有组件。
这样写:
const routes = [
{
path: "/",
exact: true,
component: () => <div> <Heading /> <SearchBar /> </div>
},
{
component: NoMatch
}
];
我有一个React应用程序,目前正在使用react-router@4.2.0,当URL更改时,我正在努力渲染特定的组件。 当我尝试访问时,CityList组件返回一个PropTypes错误。我已经尝试在LocationsWrapper中的Route组件中添加,然后再添加Main config,但是,这会影响其他路由,例如,使其变为空。 //浏览器路由器 //路由器配置-(路由) 我最好避免
我正在用react native构建一个应用程序。我正在尝试使用switchNavigator在导航中动态设置初始路由名称。这是我的密码: 航行js 授权加载。js 应用程序。js -- 路由AuthLoding的组件必须是React组件。 我做错了什么?
在标记为副本之前,请仔细阅读此内容,我向您保证,我已经阅读并尝试了每个人在stackoverflow和github上提出的关于此问题的所有建议。 我在我的应用程序中有一条路线,如下所示; route rendering呈现打开用户角色的组件,并基于该角色惰性加载正确的Routes组件,Routes组件呈现主页的开关。简化后,如下所示。 然后是路由组件 因此,问题是每当用户从/导航到/秒等...应用
问题: 有异步路由,从中获取参数并返回(组件)。问题是当我从一个到另一个(只是相同的路由,但不同。参数)我的路由器卸载并重新渲染组件。但它应该只传递新的道具,不要触及我的组件生命周期。怎么解决呢?我做错了什么? 代码: 路由器 组件将装入电影组件中 更新:好的,做了一些实验。 替换
我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将
问题内容: 我正在尝试使用单独的路线,但在我的React App中添加/编辑表单的组件相同,如下所示: 现在,在manageClient组件中,我解析查询参数(我在编辑路由中传递带有客户端ID的查询字符串),并根据传递的查询参数有条件地进行渲染。 问题在于这不会再次重新安装整个组件。假设打开了一个编辑页面,并且用户单击添加组件,URL发生了更改,但是该组件没有重新加载,因此保留在编辑页面上。 有办