Lab 7: Displaying List Data
Objectives
- Format the list data as list items
- Format the list data as cards
Steps
Format the list data as list items
Modify
src\projects\ProjectList.tsx
to format the project information into aHTML
unordered list.<ul>
<li>Project Name 1</li>
<li>Project Name 2</li>
</ul>Be sure to set a key for each list item.
src\projects\ProjectList.tsx
...
function ProjectList({ projects }: ProjectListProps) {
- return <pre>{JSON.stringify(projects, null, ' ')}</pre>;
+ return (
+ <ul className="row">
+ {projects.map((project) => (
+ <li key={project.id}>{project.name}</li>
+ ))}
+ </ul>
+ );
}
export default ProjectList;
- Verify the project names display in the browser (they may overlap at this point).
Format the list data as cards
Update
src\projects\ProjectList.tsx
to format the project information into a rows of cards that show additional project information using theHTML
template below.<div class="cols-sm">
<div class="card">
<img src="project image url" alt="project name" />
<section class="section dark">
<h5 class="strong">
<strong>project name</strong>
</h5>
<p>project description</p>
<p>Budget : project budget</p>
</section>
</div>
</div>Remember that you will need to replace attribute
class
withclassName
and change html attributes fromsrc="project image url"
tosrc={project.imageUrl}
.TIP: Visual Studio Code has an extension HTML to JSX to do the attribute conversion.
src\projects\ProjectList.tsx
...
function ProjectList({ projects }: ProjectListProps) {
- return (
- <ul className="row">
- {projects.map((project) => (
- <li key={project.id}>{project.name}</li>
- ))}
- </ul>
- );
}
export default ProjectList;...
function ProjectList({ projects }: ProjectListProps) {
+ return (
+ <div className="row">
+ {projects.map((project) => (
+ <div key={project.id} className="cols-sm">
+ <div className="card">
+ <img src={project.imageUrl} alt={project.name} />
+ <section className="section dark">
+ <h5 className="strong">
+ <strong>{project.name}</strong>
+ </h5>
+ <p>{project.description}</p>
+ <p>Budget : {project.budget.toLocaleString()}</p>
+ </section>
+ </div>
+ </div>
+ ))}
+ </div>
+ );
}
export default ProjectList;Verify the project data displays correctly in the browser.
Note you can use
toLocaleString
to format the project budgetnumber
in JavaScript.
<p>Budget : {project.budget.toLocaleString()}</p>
If you need to format something in React, ask yourself or
google.com
: How would I do this in JavaScript?