React UI com JSX

JSX é uma extensão do JavaScript que adiciona um novo tipo de expressão. Você pode usar expressões JSX em qualquer lugar que você use outra expressão.

JSX é um atalho para o uso da API React.createElement(), que é muito mais conciso, fácil de ler e visualmente parece um pouco com a UI gerada (ambos são como árvore). Você não tem que usar JSX, mas praticamente não há desvantagens, então você provavelmente irá usá-lo.

JSX é baseado em tags como XML. Cada tag, como ${'<App />'}, é transformada em uma chamada para React.createElement(). Quaisquer atributos tornam-se props do componente instanciado. Atributos podem ser strings como foo = 'hello', ou eles podem ser expressões JavaScript interpoladas quando envolto em chaves como em ${'bar={baz}'} (que remete a variável baz).

As tags podem ser auto-contidas, como ${'<App />'}, ou elas podem incluir uma abertura e fechamento de tag, como ${'<App></App>'}. Para incluir elementos filhos, você precisará usar uma tag de abertura e fechamento e colocar as tags filhas dentro.

Componentes

Componentes são os blocos para contruir qualquer interface (UI). O React gerencia o mapeamento dos componentes JavaScript para os elementos HTML. Toda a interface é especificada declarando quais componentes devem ser renderizados e em qual ordem isso deve acontecer. Componentes são aninhados dentro de outros componentes, formando uma árvore de componentes. O componente de nível mais alto, ou a raiz da árvore, é conhecido como componente raiz.

Componentes que são Funções

Conceitualmente, componentes são como funções JavaScript. Eles aceitam entradas arbitrárias ("props") e retornam um elemento React descrevendo o que deve aparecer na tela. [1]

Vamos dar uma olhada no arquivo App.js. A princípio, esse componente App é uma classe que extende a classe Component do React, dessa maneira: class App extends Component. Mas ele poderia ser apenas uma função como essa:

const App = () =>
  <div className="App">
    <div className="App-header">
      <img src={logo} className="App-logo" alt="logo" />
      <h2>Welcome to React</h2>
    </div>
    <p className="App-intro">
      To get started, edit <code>src/App.js</code> and save to reload.
    </p>
  </div>

Experimente e perceba que nossos testes continuam garantindo que essa mudança não gera nenhum impacto na maneira como nosso component aparece para o usuário.

Seu Primeiro Aplicativo React

Vamos começar nosso primeiro aplicativo React. Vamos fazer o famoso TODO APP. Vamos atualizar nosso App.js para refletir um pouco do que esperamos ver em nosso TODO APP.

const App = () =>
  <div className="App">
    <div className="App-header">
      <img src={logo} className="App-logo" alt="logo" />
      <h2>React Todos</h2>
    </div>
    <div className="Todo-App">
      <form>
        <input type="text" />
      </form>
      <div>
        <ul>
          <li><input type="checkbox" />Learn JSX</li>
          <li><input type="checkbox" />Build an Awesome App</li>
          <li><input type="checkbox" />Ship It!</li>
        </ul>
      </div>
    </div>
  </div>

Agora adicione esse conteúdo ao arquivo App.css:

.Todo-App {
  padding-top: 20px;
  display: inline-block;;
  text-align: left;
}

input {
  font-size: 20px;
}

ul {
  padding: 0px;
}

li {
  list-style-type: none;
}

Nosso aplicativo deve estar com essa cara:

React TODO App

npm test

Nossos testes devem estar assim, com mais algumas informações sobre o diff do snapshot. Calma que está tudo sob controle! Vamos pressionar u e atualizar o nosso teste, ele vai direcionar nossa implementação no próximo passo.

results matching ""

    No results matching ""