【发布时间】:2019-05-14 17:45:36
【问题描述】:
我正在开发个人网站,但在使用 React Router 动态渲染组件时遇到问题。对我来说,一切似乎都是正确的,但由于某种原因,它不起作用。
我尝试遵循文档并观看了一些教程,但我已经卡了很长时间,所以我觉得我需要帮助。
在这个组件中,我想使用 id 动态渲染“Articles”组件
class JobCard extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentWillMount() {
fetch(url)
.then(data => data.json())
.then(result =>
this.setState({
data: result
})
);
}
render() {
const { match } = this.props;
const { data, value } = this.state;
return (
<>
<div>
{results.map((job, id) => (
<div key={id}>
<div key={job._id} className="blog-card">
<div className="meta">
<div className="photo">
<img src={job.img} alt="logo" />
</div>
</div>
<div className="description">
<h5>{job.position_name}</h5>
<p className="read-more">
<p>{job.location}</p>
<p>
<span className="learn-pow">
{" "}
<Link
to={{
pathname: `${match.url}/${job._id}`,
state: job
}}
>
{job.workplace_name}
</Link>{" "}
Enter Location
</span>
</p>
</p>
</div>
</div>
</div>
))}
</div>
}
<Route path={`${match.path}/:id`} component={Articles} />
</>
);
}
}
export default JobCard;
这是我要渲染的组件:
import React from 'react';
const Articles = ({ location }) => (
<div>
<h1>{location.state.name}</h1>
<h2>{location.state.email}</h2>
<h2>{location.state.place}</h2>
</div>
)
export default Articles;
当我点击卡片时,URL 是正确的,所以我得到了 ID,但我无权访问文章组件。我试图控制台日志,但没有出现。
【问题讨论】:
-
为什么你的组件中间有这个路由?
<Route path={${match.path}/:id} component={Articles} />? -
这是我要渲染的组件,不应该在那里吗?
-
尝试将所有路由放在一个地方可能是 app.js
-
也分享错误日志
-
我没有报错,就是这个问题哈哈
标签: reactjs routing react-router