【发布时间】:2020-02-21 19:26:12
【问题描述】:
我有一个 react material-ui react 组件,我想通过更改 url 来渲染另一个 react 组件。 Create Jobs 是另一个文件中的一个组件。
我在 SO 上查看了很多关于此的其他问题,但没有一个能解决我的问题。
import { BrowserRouter as Router, Link, Switch, Route} from 'react-router-dom';
import CreateJobs from './CreateJobs'
import MuiTable from './Components/MuiTable'
import CircularProgress from '@material-ui/core/CircularProgress';
import { Grid } from "@material-ui/core";
export default function ListRunConfigs_urls(){
return(
<Router>
<Switch>
<Route path = '/Jobs' component = {ListJobs}/>
<Route path ='/Jobs/Create' component ={CreateJobs}/>
</Switch>
</Router>
)
}
...
function ListJobs(props) {
...
const createButton =
<div style={{display: 'flex', justifyContent:'center', alignItems:'center'}}>
<Button
component={Link} to='/Jobs/Create'
variant="contained"
color="primary">
Create Jobs
</Button>
</div>
return(
<> {loading ? (
<Grid
container
spacing={0}
alignItems="center"
justify="center"
style={{ minHeight: '90vh' }}
>
<CircularProgress size="10vh" />
</Grid>
) : (
<MuiTable
model="Jobs"
createButton={createButton}
/>
)}
</>
);
}
列表作业正确呈现,但当我按下创建按钮时,URL 更改为“localhost:3000/Jobs/Create”,但 CreateJobs 组件未呈现。当我单击 url 并按 Enter 键时,会呈现正确的组件。
【问题讨论】:
-
在路由器中使用
exact属性作为父 url 组件路由以确保它不会重定向第一个获取路由。你可以签入 React 路由器 docs
标签: reactjs material-ui react-router-dom