Crear los componentes para armar la estructura de un blog, poniendo cada componente en un archivo separado e importándolos donde corresponda. Pueden usar componentes del ejercicio anterior.
- Crear un componente
Header
que renderice un elementoheader
y que pueda contener componente dentro suyo
- Crear un componente
Nav
que renderice un elementonav
y un elementoul
dentro del nav, el componente debe poder contener elementos dentro suyo - El elemento
ul
debe tener el estilodisplay: flex
ylist-style: none
- El componente
NavMenu
debe aceptar la propdirection
con los valores"row"
o"column"
, siendo"row"
el valor por defecto, y cambiar el valor de la propiedadflex-direction
del elementoul
en consecuencia
- Crear un componente
MenuItem
que renderice un componenteli
con un componentea
, el componente debe poder contener elementos dentro suyo - El elemento
li
debe tener el estilodisplay: flex
- Debe aceptar la prop
path
que corresponde al atributohref
del componentea
- Crear un componente UserControl que acepte una prop user (que es un string). Si user tiene algún valor, debe renderizar un componente
p
que digaHola ${user}
y un componente a que diga Logout, en cambio si user no tiene ningún valor, debe mostrar dos componentesa
, uno que diga Login y otro Register. Separar luego ambas opciones en dos componentes distintos:GuestUserMessage
(para cuando user no tiene ningún valor) yLoggedUserMessage
- Crear un componente
BlogArticle
que renderice un componentemain
y que pueda contener componente dentro suyo
- Crear un componente
BlogImage
que tome una propimg
(un string) renderice un componenteimg
dondesrc
contiene el valor deimg
- Crear un componente
BlogTitle
que renderice un componenteh1
y que pueda contener texto dentro suyo
- Crear un componente
BlogContent
que renderice un componentep
y que pueda contener texto dentro suyo
- Crear un componente
Comments
que tome como propcomments
un array de objetos, y renderice- un componente
section
- un componente
h2
, dentro desection
que tenga como texto 'Comentarios' - por cada ítem de
comments
, generar un componenteComment
conCommentUser
yCommentContent
dentro suyo
- un componente
- Crear un componente
Comment
que renderice un componentearticle
y que pueda contener componentes dentro suyo
- Crear un componente
CommentUser
que renderice un componenteh3
y que pueda contener texto dentro suyo
- Crear un componente
CommentContent
que renderice un componentep
y que pueda contener texto dentro suyo
- Crear un componente
Footer
que renderice un componentefooter
y que pueda contener componente dentro suyo
Crear un layout usando los componentes anteriores, de la siguiente forma:
const comments = [{
user: 'Grace Hopper',
comment: 'Genial artículo!
}, {
user: 'Hedy Lamarr',
comment: 'Muy bueno! Gracias por compartir'
}]
<Header>
<NavMenu>
<NavItem path='/home'>Home</NavItem>
<NavItem path='/about-us'>Sobre mí</NavItem>
<NavItem path='/contact'>Artículos</NavItem>
</Menu>
<UserControl user="Ada" />
</Header>
<BlogArticle>
<BlogImage img="imagen.jpg" />
<BlogTitle>Cómo hacer un proyecto en React</BlogTitle>
<BlogContent>Lorem ipsum...</BlogContent>
</BlogArticle>
<Comments comments={comments} />
<Footer>® 2020 - All rights reserved</Footer>