【发布时间】:2021-08-02 13:49:49
【问题描述】:
我要做的是在编辑页面上,我首先搜索该项目,然后对其进行编辑。
因此,每当我转到“/items/edit”时,它也会呈现 ItemPage('/items/:id') 页面。有没有办法解决这个问题,或者我必须将编辑页面的链接更改为“项目编辑”。
我正在使用“react-router-dom”,我的路由文件看起来像这样。
// Relative imports
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom';
// Absolute imports
import YourReactComp from './YourReactComp.jsx';
const root = document.getElementById('root');
const MainPage= () => (
<div>Main Page</div>
);
const const ItemPage= () => (
<div>Item Page</div>
);
const EditPage= () => (
<div>Edit Page</div>
);
const NoMatch = () => (
<p>No Match</p>
);
const RoutedApp = () => (
<BrowserRouter >
<Switch>
<Route exact path="/items/:id" component={ItemPage} />
<Route exact path="/items/edit" component={EditPage} />
<Route path="/yourReactComp" component={YourReactComp} />
<Route path="*" component={NoMatch} />
</Switch>
</BrowserRouter>
);
ReactDOM.render(<RoutedApp />, root);
【问题讨论】:
-
你试过改变这两条路线的顺序吗?带参数的路由比带编辑的路由更通用。
-
@tswistak OP 似乎在说两条路线都在同时渲染。这不应该发生。
-
@yash 你能用codesandbox.io 创建一个样本吗?由于您的代码似乎完全正确。一次只能渲染
ItemPage和EditPage中的任何一个,而不能同时渲染。 -
当然,我会做一个沙盒。
-
是的,我已经尝试更改顺序,也尝试更改确切的道具。
标签: javascript reactjs routes react-router react-router-dom