React Router Redux 总是显示第一条路线
React Router Redux always show first route
React router redux 总是显示第一个路由。无论我输入哪个url,它都会渲染第一条路线。
Index.js 文件
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
App.js 文件
export default function App() {
return (
<Switch>
<Route to="/" component={Dashboard} key={1} />;
<Route to="/icons" component={Icons} key={2} />;
</Switch>
);
}
在Route中添加exact={true}即可,默认exact设置为false,看一下here.
<Route exact path="/" component={Dashboard} key={1} />;
这是因为您的示例中的路由配置错误。您需要将 exact 属性添加到第一条路线。
示例:
<Switch>
<Route exact to="/" component={Dashboard} />;
<Route to="/icons" component={Icons} />;
</Switch>
如果您不在“/”路由中添加 exact,那么它将始终被匹配,因为所有其他路由也有 / 作为其一部分。
我的建议是默认将所有路由定义为精确路由,仅在需要时设置非精确路由,例如:
<Switch>
<Route exact to="/" component={Dashboard} key={1} />;
<Route exact to="/icons" component={Icons} key={2} />;
<Route to="/icons/:iconId" component={IconDetails} key={3} />;
</Switch>
使用Switch时需要添加Routes,因为Switch会匹配并渲染匹配到的第一条路由,所以最后的Routes的路径是其他Routes的前缀。
export default function App() {
return (
<Switch>
<Route to="/icons" component={Icons} key={2} />
<Route to="/" component={Dashboard} key={1} />
</Switch>
);
}
而且你不需要 ;
在 JSX 语句的末尾
React router redux 总是显示第一个路由。无论我输入哪个url,它都会渲染第一条路线。
Index.js 文件
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
App.js 文件
export default function App() {
return (
<Switch>
<Route to="/" component={Dashboard} key={1} />;
<Route to="/icons" component={Icons} key={2} />;
</Switch>
);
}
在Route中添加exact={true}即可,默认exact设置为false,看一下here.
<Route exact path="/" component={Dashboard} key={1} />;
这是因为您的示例中的路由配置错误。您需要将 exact 属性添加到第一条路线。
示例:
<Switch>
<Route exact to="/" component={Dashboard} />;
<Route to="/icons" component={Icons} />;
</Switch>
如果您不在“/”路由中添加 exact,那么它将始终被匹配,因为所有其他路由也有 / 作为其一部分。
我的建议是默认将所有路由定义为精确路由,仅在需要时设置非精确路由,例如:
<Switch>
<Route exact to="/" component={Dashboard} key={1} />;
<Route exact to="/icons" component={Icons} key={2} />;
<Route to="/icons/:iconId" component={IconDetails} key={3} />;
</Switch>
使用Switch时需要添加Routes,因为Switch会匹配并渲染匹配到的第一条路由,所以最后的Routes的路径是其他Routes的前缀。
export default function App() {
return (
<Switch>
<Route to="/icons" component={Icons} key={2} />
<Route to="/" component={Dashboard} key={1} />
</Switch>
);
}
而且你不需要 ;
在 JSX 语句的末尾