【发布时间】:2018-10-10 21:34:02
【问题描述】:
所以我正在尝试使用 React 构建我的投资组合网站来练习。 我想让我的项目(当前从数组呈现)链接到项目概述页面,该页面将数组中的正确数据呈现到页面上。
const data = [
{
'name': 'Cady Studios',
'date': 'January 2018',
'type': 'UI/UX | Front End Development',
'imageUrl': require('../images/projectOneImage.png'),
'link': '',
'brief': '',
'tech': '',
},
{
'name': 'SWP Connect',
'date': 'March 2018',
'type': 'UI/UX',
'imageUrl': require('../images/projectTwoImage.png'),
'link': '',
'brief': '',
'tech': '',
},
{
'name': 'Carzilla',
'date': 'November 2017',
'type': 'UI/UX',
'imageUrl': require('../images/projectThreeImage.png'),
'link': '',
'brief': '',
'tech': '',
},
{
'name': 'Stone Mountain Park',
'date': 'September 2017',
'type': 'UI/UX',
'imageUrl': require('../images/projectFourImage.png'),
'link': '',
'brief': '',
'tech': '',
}
];
function Project(props){
return (
<div>
<a href={props.link} >
<div className="project">
<figure className="effect-sadie">
<img className="projectImage img-fluid"
src={props.imageUrl}
alt={props.name}
/>
<figcaption>
<div className="projectInfoSmall">
<div className="projectType"><p>{props.type}</p></div>
</div>
<div className="projectTitle"><h2>{props.name}</h2></div>
</figcaption>
</figure>
</div>
</a>
</div>
);
}
class ProjectsSection extends Component {
constructor(props) {
super(props)
this.state = {
works: []
}
}
componentWillMount() {
this.loadWork()
}
loadWork() {
const works = []
data.map(item => works.push(item))
this.setState({ works })
setTimeout(() => {
console.log(this.state)
}, 2000)
}
render() {
const projects = this.state.works.map((project, index) => <div className="grid"><Project
name={project.name}
date={project.date}
type={project.type}
imageUrl={project.imageUrl}
link={project.link}
brief={project.brief}
tech={project.tech}
key={index}
/></div>)
return (
<div className="container">
<div className="project-section">
<h2>Recent Projects</h2>
{ projects }
</div>
</div>
)
}
}
我假设我需要使用一些条件渲染来获得我想要的东西,但我不确定从哪里开始。 我试图创建概述模板,但感觉我遗漏了一些东西。我知道在链接到页面时我需要 ReactRouter 的帮助,但除此之外我被困住了!任何帮助将不胜感激! Link to Github
function ProjectsTemplate(props) {
return(
<div>
<div className="projectHero">
<div className="projectHeading">
<h1>{props.name}</h1>
<div className="projectInfoLeft">
<div className="projectRole">
<h5>Role</h5>
<p>{props.type}</p>
</div>
<div className="projectTech">
<h5>Tech</h5>
<p>{props.tech}</p>
</div>
<div className="projectDate">
<h5>Date</h5>
<p>{props.date}</p>
</div>
</div>
<div className="projectInfoRight">
<div className="projectBrief">
<h5>Brief</h5>
<p>{props.brief}</p>
</div>
</div>
</div>
</div>
</div>
);
}
class ProjectsPage extends Component {
render() {
return(
<div>
<div className="container">
<Header />
<ProjectsTemplate />
</div>
</div>
);
}
}
【问题讨论】:
-
你得到什么渲染了吗?
-
是的,我已经在主页上正确呈现了项目。就是不知道怎么把项目数据也传到项目概览页面,具体看首页点击的是哪个项目。
-
你在项目的div中定义了onClick吗?这个 onclick 应该会切换到项目的路由。
-
我还没有定义 onClick 处理程序。这会包装整个项目div吗?你认为你可以提供一个例子或给我一个例子吗?感谢您的帮助
标签: reactjs react-router