- Format the list data as list items
- Format the list data as cards
-
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.
...
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).
-
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.
... 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?