Hoje, na próxima parte da tradução do curso de treinamento React, começaremos o trabalho no primeiro projeto de treinamento e falaremos sobre os conceitos básicos de estilo.

→ 
Parte 1: visão geral do curso, razões para a popularidade do React, ReactDOM e JSX→ 
Parte 2: componentes funcionais→ 
Parte 3: arquivos de componentes, estrutura do projeto→ 
Parte 4: componentes pai e filho→ 
Parte 5: início do trabalho em um aplicativo TODO, noções básicas de estilo→ 
Parte 6: sobre alguns recursos do curso, JSX e JavaScript→ 
Parte 7: estilos embutidos→ 
Parte 8: trabalho contínuo na aplicação TODO, familiaridade com as propriedades dos componentes→ 
Parte 9: propriedades do componente→ 
Parte 10: Workshop sobre como trabalhar com propriedades e estilo de componentes→ 
Parte 11: geração dinâmica de marcação e método de matrizes de mapas→ 
Parte 12: workshop, terceira etapa do trabalho em uma aplicação TODO→ 
Parte 13: componentes baseados em classe→ 
Parte 14: workshop sobre componentes baseados em classe, status dos componentes→ 
Parte 15: oficinas de saúde componentes→ 
Parte 16: a quarta etapa do trabalho em um aplicativo TODO, manipulação de eventos→ 
Parte 17: quinta etapa do trabalho em um aplicativo TODO, modificando o estado dos componentes→ 
Parte 18: a sexta etapa do trabalho em um aplicativo TODO→ 
Parte 19: métodos do ciclo de vida dos componentesParte 20: a primeira lição sobre renderização condicional→ 
Parte 21: segunda lição e workshop sobre renderização condicional→ 
Parte 22: sétima etapa do trabalho em um aplicativo TODO, baixando dados de fontes externas→ 
Parte 23: primeira lição sobre como trabalhar com formulários→ 
Parte 24: Segunda lição sobre formulários→ 
Parte 25: Workshop sobre como trabalhar com formulários→ 
Parte 26: arquitetura do aplicativo, padrão Container / Component→ 
Parte 27: projeto do cursoLição 11. Oficina. Aplicação TODO. Estágio número 1
→ 
OriginalNesta lição, começaremos o trabalho em nosso primeiro projeto de treinamento - o aplicativo TODO. Classes semelhantes serão enquadradas como oficinas comuns. Primeiro, você terá uma tarefa, cuja implementação será necessária para navegar no material estudado anteriormente, após o qual será apresentada uma solução.
Trabalharemos neste aplicativo por algum tempo; portanto, se você usar o 
create-react-app , é recomendável criar um projeto separado para ele.
▍Job
- Crie um novo aplicativo React.
- Exiba o componente <App />na página usando o arquivoindex.js.
- O componente <App />deve gerar código para exibir 3-4 sinalizadores com algum texto após eles. O texto pode ser formatado usando as tags<p>ou<span>. O que você pode fazer deve se parecer com uma lista de tarefas em que algumas entradas já foram feitas.
▍Solução
O código para o arquivo 
index.js :
 import React from 'react' import ReactDOM from 'react-dom' import App from './App' ReactDOM.render(   <App />,   document.getElementById('root') ) 
App.js arquivo 
App.js import React from "react" function App() {   return (       <div>           <input type="checkbox" />           <p>Placeholder text here</p>                     <input type="checkbox" />           <p>Placeholder text here</p>                     <input type="checkbox" />           <p>Placeholder text here</p>                     <input type="checkbox" />           <p>Placeholder text here</p>       </div>   ) } export default App 
Aqui está a aparência do projeto padrão 
create-react-app react 
create-react-app no VSCode nesta fase do trabalho.
Projeto no VSCodeÉ isso que nosso aplicativo agora exibe na página.
Aparência do aplicativo no navegadorHoje, demos o primeiro passo em direção a um aplicativo TODO. Mas o que exibe esse aplicativo na tela não parece tão agradável quanto o que apareceu nas páginas de nossas experiências anteriores. Portanto, na próxima lição, focaremos no estilo dos elementos.
Lição 12. Estilo em React usando classes CSS
→ 
OriginalAgora, trabalharemos no aplicativo criado como resultado do workshop na lição 10. Aqui está o que o aplicativo exibido na tela.
Página do aplicativo no navegadorGostaríamos de estilizar os elementos da página. O React possui muitas abordagens de estilo. Agora estamos usando a abordagem com os princípios dos quais você provavelmente já conhece. Consiste na aplicação de classes CSS e regras CSS atribuídas a essas classes. Vamos dar uma olhada na estrutura deste projeto e pensar sobre quais elementos precisam ser atribuídos às classes que serão usadas para estilizá-los.
Projeto no VSCodeO arquivo 
index.js responsável por renderizar o componente 
App . O componente 
App exibe um elemento 
<div> , que contém três outros componentes - 
Header , 
MainComponent e 
Footer . E cada um desses componentes simplesmente exibe um elemento JSX com texto. É nesses componentes que estaremos envolvidos no estilo. Vamos trabalhar no componente 
Header . Lembre-se de que, nesta fase de seu trabalho, seu código se parece com o seguinte:
 import React from "react" function Header() {   return (       <header>This is the header</header>   ) } export default Header 
Normalmente, quando eles trabalham com código HTML e desejam atribuir uma classe a um determinado elemento, isso é feito usando o atributo 
class . Suponha que vamos atribuir esse atributo a um elemento 
<header> . Mas aqui não devemos esquecer que não estamos trabalhando com código HTML, mas com JSX. E aqui não podemos usar o atributo de 
class (na verdade, você pode usar o atributo com esse nome, mas isso não é recomendado). Em vez disso, um atributo chamado 
className . Muitas publicações dizem que o motivo disso é porque 
class é uma palavra-chave 
JavaScript reservada. Mas, de fato, o JSX usa a API JavaScript comum para trabalhar com o DOM. Para acessar elementos usando essa API, é usado um design familiar do seguinte formulário:
 document.getElementById("something") 
Para adicionar uma nova classe a um elemento, proceda da seguinte maneira:
 document.getElementById("something").className += " new-class-name" 
Em uma situação semelhante, é mais conveniente usar a propriedade dos elementos 
classList , em particular, porque possui métodos convenientes para adicionar e remover classes, mas, nesse caso, não importa. E o importante é que a propriedade 
className seja usada 
className .
De fato, para atribuir classes a elementos JSX, basta saber que, onde a palavra-chave da 
class é usada em HTML, a palavra-chave 
className deve ser usada no JSX.
Atribua a classe navbar ao 
navbar <header> :
 import React from "react" function Header() {   return (       <header className="navbar">This is the header</header>   ) } export default Header 
Agora, na pasta de 
components , crie o arquivo 
Header.css . Coloque o seguinte código nele:
 .navbar { background-color: purple; } 
Agora conecte esse arquivo ao 
Header.js com o comando 
import "./Header.css" (com este comando, expandindo os recursos do comando de 
import padrão, informamos ao empacotador do Webpack que usamos nos projetos criados usando as ferramentas 
create-react-app que queremos use 
Header.css em 
Header.js ).
É assim que ficará no VSCode.
Arquivo de estilo e sua conexão no VSCodeTudo isso levará ao fato de que a aparência da linha superior exibida pelo aplicativo na página muda.
Alterar o estilo da linha superiorAqui usamos um estilo extremamente simples. 
Header.css conteúdo do arquivo 
Header.css pelo seguinte:
 .navbar {   height: 100px;   background-color: #333;   color: whitesmoke;   margin-bottom: 15px;   text-align: center;   font-size: 30px;   display: flex;   justify-content: center;   align-items: center; } 
Além disso, abra o arquivo 
index.css já existe no projeto e coloque o seguinte estilo:
 body {   margin: 0; } 
index.js esse arquivo no 
index.js com o comando 
import "./index.css" . Como resultado, a página do aplicativo assumirá o formato mostrado na figura a seguir.
Alterar o estilo da páginaObserve que os estilos especificados em 
index.css afetaram todos os elementos da página. Se você usar, por exemplo, algum tipo de editor online para experimentação, o trabalho com arquivos de estilo poderá ser organizado de uma maneira especial. Por exemplo, nesse editor, pode haver um único arquivo de estilo padrão que é automaticamente conectado à página; as regras CSS descritas nas quais serão aplicadas a todos os elementos da página. Em nosso exemplo simples, seria totalmente possível colocar todos os estilos em 
index.css .
Na verdade, supondo que você já esteja familiarizado com CSS, podemos dizer que aqui usamos exatamente o mesmo código CSS usado para estilizar elementos HTML comuns. O principal aspecto a ser lembrado ao estilizar elementos com classes no React é que, em vez do atributo do elemento de 
class usado em HTML, 
className usado.
Além disso, deve-se observar que as classes só podem ser atribuídas aos elementos React - como 
<header> , 
<p> ou 
<h1> . Se você tentar atribuir um nome de classe a uma instância de componente - como 
<Header /> ou 
<MainContent /> , o sistema se comportará de maneira bem diferente do que você poderia esperar. Falaremos sobre isso mais tarde. Enquanto isso, lembre-se de que as classes nos aplicativos React são atribuídas a elementos, não a componentes.
Aqui está outra coisa que você pode achar difícil de começar com o React. Estamos falando de elementos de estilo que têm diferentes níveis de hierarquia na página. Digamos que isso acontece quando as tecnologias CSS Flexbox ou CSS Grid são usadas para estilizar. Nesses casos, por exemplo, ao usar o layout Flex, você precisa saber qual entidade é o contêiner flex e quais entidades são elementos flex. Ou seja, pode ser difícil entender - como exatamente estilizar elementos, a quais elementos aplicar certos estilos. Suponha, por exemplo, que o elemento 
<div> do nosso componente 
App deva ser um contêiner flexível:
 import React from "react" import Header from "./components/Header" import MainContent from "./components/MainContent" import Footer from "./components/Footer" function App() {   return (       <div>           <Header />           <MainContent />           <Footer />       </div>   ) } export default App 
Nesse caso, os elementos flexíveis são exibidos por meio dos componentes 
Header , 
MainContent e 
Footer . Veja, por exemplo, o código do componente 
Header :
 import React from "react" import "./Header.css" function Header() {   return (       <header className="navbar">           This is the header       </header>   ) } export default Header 
O elemento 
<header> deve ser um descendente direto do elemento 
<div> do componente 
App . Deve ser estilizado como um elemento flexível.
Para entender a estilização de tais construções, é necessário considerar qual será o código HTML gerado pelo aplicativo. Abriremos a guia 
Elements das ferramentas de desenvolvedor do Chrome para a página que aparece no navegador ao trabalhar com um projeto criado usando o 
create-react-app .
Código da PáginaO elemento 
<div> com a 
root identificadora é o elemento da página 
index.html que nos referimos no método 
ReactDOM.render() chamado no arquivo 
index.js . A marcação gerada pelo componente 
App é exibida, a saber, o próximo elemento 
<div> , que contém os elementos 
<header> , 
<main> e 
<footer> formados pelos componentes correspondentes.
Ou seja, analisando o código do aplicativo React fornecido acima, podemos assumir que a construção 
<Header /> no componente 
App é substituída pela 
<header className="navbar">This is the header</header> . Compreender esse fato permite que você use esquemas complexos para estilizar elementos da página.
Isso conclui nossa primeira introdução ao estilo de aplicativos React. É recomendável que você experimente o que acabou de descobrir. Por exemplo, tente 
<MainContent /> elementos gerados pelos componentes 
<MainContent /> e 
<Footer /> .
Sumário
Hoje, começamos a desenvolver nosso primeiro projeto de treinamento - aplicativos TODO, e também nos familiarizamos com o estilo de aplicativos React usando classes CSS. Na próxima vez, falaremos sobre os recursos de estilo de código aos quais o autor deste curso adere, bem como algumas coisas sobre JSX e JavaScript.
Caros leitores! Você já tem uma idéia para um aplicativo que gostaria de criar usando o React?
