javascript - 反应中的路由问题
问题描述
我正面临这个路由问题,一旦用户点击 /home,它就会被重定向到另一个路由 /home/render 并且一切都很好。但是,如果有人点击 home/live,我看不到它会呈现所需的 Component1。这是代码框的链接。 沙盒链接
这是我的主要组件 index.js
import App from "./Components/App";
import Home from "./Components/Home";
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
class Parent extends React.Component {
render() {
return (
<div>
<Router>
<Switch>
<Route exact path="/" component={Page} />
<Route exact path="/home" component={App} />
<Route path="/home/render" component={Home} />
</Switch>
</Router>
</div>
);
}
}
class Page extends React.Component {
render() {
return <div>Page</div>;
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<Parent />, rootElement);
这是我的 App.js
class App extends React.Component {
render() {
const { match } = this.props;
console.log("match.url", match.url);
console.log("match.path", match.path);
return (
<div>
<h1>App</h1>
<Switch>
<Redirect from={match.url} exact to={match.url + "/render"} />;
<Route
path={match.path + "/live"}
render={routeProps => (
<Component1
matchBaseUrl={match.url}
{...routeProps}
matchId={100}
/>
)}
/>
</Switch>
</div>
);
}
}
我没有放 component.js 因为那只是我在点击 home/live 时在屏幕上渲染的一个简单组件。
解决方案
Component1
永远不会渲染,因为您将exact
prop 设置为true
在/home
路线上,这将使其仅在路径为时才匹配,仅此/home
而已。
您可以移除exact
道具并将路线移动到路线下方,/home/render
以便优先并且它将按预期工作。
<Switch>
<Route exact path="/" component={Page} />
<Route path="/home/render" component={Home} />
<Route path="/home" component={App} />
</Switch>
推荐阅读
- python - 如何将数据框转换为嵌套字典?
- python - 如何用 scrapy 抓取交互式图表?
- android - 如何查询 ParseObject 类中的指针?
- angularjs - Angularjs延迟加载工厂和注册https拦截器不起作用
- javascript - Firebase 数据库 orderByChild().startAt().endAt() 未按预期工作
- php - 如何在 WooCommerce 结帐中制作所需的表单字段
- c# - 我如何在这里使用起订量?
- python - 在熊猫分组中选择一个
- java - 如何将 compareTo 与 T Java 泛型一起使用?
- html - 如何在单独的div中水平对齐按钮