React:基于道具创建动态路线
React: creating a dynamic Route based on a prop
我正在从服务器检索一些数据,我将这些数据映射到我的 React 项目中的子组件中。
componentDidMount() {
axios.get('http://localhost:5000/machinelearning')
.then(res => this.setState({projects: res.data, isLoading: false}))
}
...
const projects = this.state.isLoading ? <CircularProgress color="secondary" size={200}/> : this.state.projects.projects[0].map((project, i) =>{
const projectObj = Object.assign({}, project)
console.log(projectObj)
return(
<div style={{padding: '15px'}} key={i+1}>
<MachineLearningProject project={projectObj} />
</div>
在每个组件中,我想创建一个动态路由,链接到从服务器传入的同名组件。
我在组件上的图片上做了一个动态Link。
<Link to={`${props.project.name}`} >
<CardMedia
className={classes.media}
image={`data:image/jpeg;base64,${props.project.picture}`}
title="Picture"
/>
</Link>
在组件底部使用动态路由
<Route path="/:project"
component={ChatBot} //this component is hardcoded for testing purposes
/>
理想情况下我希望它看起来像这样
但它不喜欢任何地方,我做错了什么?
您需要将组件的动态路由更新为
<LinkContainer to={props.project.name}>
<Button> Label Stuff </Button>
</LinkContainer>
理想情况下,您的 App.js
应该根据 link 讨论加载哪个组件,因为路由器逻辑驻留在那里。
<Router>
<Switch>
<Route path={"Your Path"} component={"You Component"} />
</Switch>
<Router>
我正在从服务器检索一些数据,我将这些数据映射到我的 React 项目中的子组件中。
componentDidMount() {
axios.get('http://localhost:5000/machinelearning')
.then(res => this.setState({projects: res.data, isLoading: false}))
}
...
const projects = this.state.isLoading ? <CircularProgress color="secondary" size={200}/> : this.state.projects.projects[0].map((project, i) =>{
const projectObj = Object.assign({}, project)
console.log(projectObj)
return(
<div style={{padding: '15px'}} key={i+1}>
<MachineLearningProject project={projectObj} />
</div>
在每个组件中,我想创建一个动态路由,链接到从服务器传入的同名组件。
我在组件上的图片上做了一个动态Link。
<Link to={`${props.project.name}`} >
<CardMedia
className={classes.media}
image={`data:image/jpeg;base64,${props.project.picture}`}
title="Picture"
/>
</Link>
在组件底部使用动态路由
<Route path="/:project"
component={ChatBot} //this component is hardcoded for testing purposes
/>
理想情况下我希望它看起来像这样
但它不喜欢任何地方,我做错了什么?
您需要将组件的动态路由更新为
<LinkContainer to={props.project.name}>
<Button> Label Stuff </Button>
</LinkContainer>
理想情况下,您的 App.js
应该根据 link 讨论加载哪个组件,因为路由器逻辑驻留在那里。
<Router>
<Switch>
<Route path={"Your Path"} component={"You Component"} />
</Switch>
<Router>