项目作者: arturmbrasil

项目描述 :
Desafio 4 do BootCamp GoStack da RocketSeat
高级语言: JavaScript
项目地址: git://github.com/arturmbrasil/desafio-gostack-facebook-react.git



GoStack


Desafio 4: Introdução ao React

“Sucesso não é o resultado de um jogo, mas o destino de uma jornada”!

:rocket: Resultado

Além do que foi pedido no desafio, foi criada uma funcionalidade para adcionar novos Posts!

Resultado

:rocket: Sobre o desafio

Crie uma aplicação do zero utilizando Webpack, Babel, Webpack Dev Server e ReactJS.

Nessa aplicação você irá desenvolver uma interface semelhante com a do Facebook utilizando React.

As informações contidas na interface são estáticas e não precisam refletir nenhuma API REST ou back-end.

Tela da aplicação

Facebook

O layout não precisa ficar exatamente igual, você pode utilizar sua criatividade para modificar da maneira que preferir.

O mais importante é que todos elementos apareçam em tela.

O layout da aplicação está nesse link que pode ser aberto por essa ferramenta gratuita e online: https://www.figma.com/

Componentes

Na imagem abaixo destaquei cada componente que você criará e abaixo da imagem está a descrição e responsabilidades de cada um:

Componentes

Header (Amarelo): Responsável por exibir a logo e o link para acessar o perfil;

PostList (Verde): Responsável por armazenar os dados da listagem de post, esses dados devem ficar dentro do state do componente e não em uma variável comum, por exemplo:

  1. class PostList extends Component {
  2. state = {
  3. posts: [
  4. {
  5. id: 1,
  6. author: {
  7. name: "Julio Alcantara",
  8. avatar: "http://url-da-imagem.com/imagem.jpg"
  9. },
  10. date: "04 Jun 2019",
  11. content: "Pessoal, alguém sabe se a Rocketseat está contratando?",
  12. comments: [
  13. {
  14. id: 1,
  15. author: {
  16. name: "Diego Fernandes",
  17. avatar: "http://url-da-imagem.com/imagem.jpg"
  18. },
  19. content: "Conteúdo do comentário"
  20. }
  21. ]
  22. },
  23. {
  24. id: 2
  25. // Restante dos dados de um novo post
  26. }
  27. ]
  28. };
  29. }

Post (Vermelho): Responsável por exibir os dados do post, esses dados devem vir através de uma propriedade recebida do componente PostList, ou seja, lá no PostList você terá algo assim:

  1. posts.map(post => <Post key={post.id} data={post} ></Post>);

Comment (Azul): Responsável por exibir um comentário. Os dados do comentário virão por uma propriedade do componente. Dentro do componente Post você terá um novo .map para listar os comentários do post:

  1. data.comments.map(comment => <Comment key={comment.id} data={comment} ></Comment>);