我有一个React应用程序,目前正在使用react-router@4.2.0,当URL更改时,我正在努力渲染特定的组件。
当我尝试访问/locations/new
时,CityList组件返回一个PropTypes错误。我已经尝试在LocationsWrapper中的Route组件中添加exact
,然后再添加Main config,但是,这会影响其他路由,例如/locations
,使其变为空。
//浏览器路由器
import React from "react";
import { render } from "react-dom";
import { BrowserRouter } from "react-router-dom";
import { Provider } from "react-redux";
import store from "./store";
import Navbar from "./components/Core/Navbar";
import Routes from "./config/routes";
render(
<Provider store={store}>
<BrowserRouter>
<div style={{ backgroundColor: "#FCFCFC" }}>
<Navbar />
<Routes />
</div>
</BrowserRouter>
</Provider>,
document.getElementById("root")
);
//路由器配置-(路由)
import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from "../components/Home";
import Locations from "../components/Locations";
import CityList from "../components/CityList";
import CreateLocation from "../components/CreateLocation";
import Locale from "../components/Locale/index";
import Profile from "../components/Profile";
import NoMatch from "../components/Core/NoMatch";
import requireAuth from "../components/Core/HOC/Auth";
const LocationsWrapper = () => (
<div>
<Route exact path="/locations" component={Locations} />
<Route path="/locations/new" component={CreateLocation} />
<Route path="/locations/:id" component={CityList} />
</div>
);
const Main = () => (
<main>
<Switch>
<Route exact path="/" component={requireAuth(Home)} />
<Route path="/locations" component={LocationsWrapper} />
<Route path="/locale/:id" component={Locale} />
<Route path="/profile" component={requireAuth(Profile, true)} />
<Route component={NoMatch} />
</Switch>
</main>
);
export default Main;
我最好避免
非常确定您的路由不起作用,因为您还将参数与 /locations/new匹配 /locations/: id,因此new成为Id参数。
试着改变这个
<Route path="/locations/new" component={CreateLocation} />
像这样的事情
<Route path="/locs/new" component={CreateLocation} />
只是一个建议,希望这能有所帮助
是的,这个肯定会先退货
<Route path="/locations/:id" component={CityList} />
在反应路由器4没有索引路由的概念,它会检查每一个路由,所以在你的定义路由是相同的
<Route path="/locations/new" component={CreateLocation} />
<Route path="/locations/:id" component={CityList} />
两个路径都是相同的'/location/new'
和'/location/:id'
so/new和/:id是相同的参数。
所以“城市列表”最终会回来
你可以这样定义
<Route path="/locations/create/new" component={CreateLocation} />
<Route path="/locations/list/:id" component={CityList} />
我最近在我的路由中实现了反应路由器开关组件,以便呈现一个NoMatch组件(这只是一个404错误组件)。然而,在我的路由中实现这一点后,我注意到在我的主页上只有一个组件会呈现,标题组件。 标题和搜索栏都应该呈现到相同的路径。 我的代码如下: 我注意到如果我删除了Switch组件,那么一切都会渲染得很好,但是NoMatch组件也会渲染到路由。 问题:为什么我不能在交换机内部的同一路径上渲染多个组件?
react&React-Router的新功能。我正在使用react-router-4 我有以下组件-login-home-header-sidebar-content 登录组件没有标题或侧栏。 这就是我的路由 应用程序JS 然后在我的Home组件中,我有侧边栏和内容。 home.js呈现方法 侧边栏组件有一个链接,该链接具有“to”值“/home/dashboard”。 不幸的是,这并不奏效。单击
我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将
问题内容: 我正在尝试在我的组件之一中进行嵌套路由。 这是父组件: 这是子组件: 可以很好地呈现路线,但呈现完全空白的页面。知道为什么会这样吗? 问题答案: 发生此现象的原因是在父路由上提到了一个属性 因此,发生的事情是react-router看到了一条匹配的路径,然后尝试从顶层开始进行匹配。它看到两条路线,一条是,另一条是。它们都不符合所需的路径,因此您会看到空白页 你需要写 因此,当您执行此操
我正在用react native构建一个应用程序。我正在尝试使用switchNavigator在导航中动态设置初始路由名称。这是我的密码: 航行js 授权加载。js 应用程序。js -- 路由AuthLoding的组件必须是React组件。 我做错了什么?
在标记为副本之前,请仔细阅读此内容,我向您保证,我已经阅读并尝试了每个人在stackoverflow和github上提出的关于此问题的所有建议。 我在我的应用程序中有一条路线,如下所示; route rendering呈现打开用户角色的组件,并基于该角色惰性加载正确的Routes组件,Routes组件呈现主页的开关。简化后,如下所示。 然后是路由组件 因此,问题是每当用户从/导航到/秒等...应用