Se você já conhece ou procurou saber algo sobre React, provavelmente se deparou muito com a seguinte frase: React é uma biblioteca JavaScript para construção de interfaces de usuário.

Antes de se aprofundar e cair de cabeça na biblioteca, é preciso ter em mente que React JS é JavaScript. Por isso é importante bater na tecla que para você aprender React você precisa ter uma boa base em JavaScript – além de conhecimentos sólidos de HTML e CSS.

Neste artigo será passado alguns conceitos básicos de JavaScript para, caso ainda não esteja dominando ou não tenha conhecimento de alguns dos tópicos, vocês possam reforçar essa base e com isso conseguirem seguir com o aprendizado do React.

Operador Ternário

O operador condicional (ternário) é frequentemente usado com um atalho para o if.

Ele funciona verificando uma condição, se essa condição for verdadeira (true) ele retorna uma expressão, já se for falsa (false), retorna a outra. Nos Códigos 1 e 2 temos exemplos de como utilizar o operador ternário.

let salario = 1000;
let bonus = 0.0;

if (salario > 1000) {
  bonus = salario * 0.10;
} else {
  bonus = salario * 0.15;
}

console.log(bonus)
Código 1. Exemplo de código utilizando o operador condicional if/else

let salario = 1000;
let bonus = 0.0;

salario > 1000 ? bonus = salario * 0.10 : bonus = salario * 0.15

console.log(bonus)
Código 2. Exemplo de código utilizando o operador ternário

Operador Spread

O operador Spread é usado com bastante frequência no React devido à imutabilidade, ou seja, quando criamos um array ou objeto ele não pode ser alterado, sendo assim, precisamos criar um objeto ou array novo a partir do já existente, como vemos no Código 3.

A sintaxe do operador spread é:

[...]
const arr = [0, 1, 2]
const novoArr = [...arr, 3]
console.log(novoArr)
Código 3. Exemplo de código utilizando o operador spread

Eventos de usuário

Os eventos são ações ou ocorrências que acontecem quando o usuário (por exemplo: clique em botão) ou o navegador (por exemplo: página carregada) manipula uma página. Os eventos são essenciais, pois com essas ações é possível responder da forma adequada.

Um exemplo prático: um usuário clica em um botão em uma página web com o intuito de “ver mais”, o evento identifica esta ação e disparará uma função que mostra uma caixa de informações.

Os eventos que serão mais utilizados:

  • onclick - Quando o usuário clica em determinado elemento;
  • onChange - Quando o conteúdo de um elemento é alterado - por exemplo o usuário digita algo dentro de um input.
  • onSubmit - Quando o usuário envia dados através de formulários.

Template String

Template String é utilizado para fazer a interpolação de strings com expressões de JavaScript, sem necessidade de concatenar as expressões.

Para escrever um template string é utilizado duas vezes o acento grave (` `) ao invés da comumente utilizada aspas duplas (“ ”).

Para fazer a interpolação num template string será utilizado a seguinte sintaxe:

${...}

Nos Códigos 4 e 5 vemos um exemplo de concatenação de strings, respectivamente sem e com template string.

let nome = "João";
let sobrenome = "José";
let texto = "Bem-vindo " + nome + " " + sobrenome + "!";
console.log(texto)
Código 4. Exemplo de concatenação de strings (sem template string)
let nome = "João";
let sobrenome = "José";
let texto = `Bem-vindo ${nome} ${sobrenome}!`;
console.log(texto)
Código 5. Exemplo de interpolação de strings (com template string)

Arrow Functions

A arrow function ( => ) é uma sintaxe alternativa, mais compacta quando comparada a uma expressão de função tradicional do JavaScript, como vemos nos Códigos 6 e 7.

function total (a, b) {
     return a + b
}
console.log(total(5, 5))
Código 6. Exemplo de função com a sintaxe tradicional
const total = (a, b) => {
     return a + b;
};
console.log(total(5, 5));
Código 7. Exemplo de função com a sintaxe arrow function

É importante ressaltar que essa expressão possui variações da sintaxe, por exemplo, usar o return ou retornar de uma forma implícita, como mostra o Código 8.

const total = (a, b) => a + b;
console.log(total(5, 5));
Código 8. Variação da sintaxe

No exemplo podemos notar que ao retirarmos as chaves não é mais necessário a utilização do return para encerrar a função.

Métodos de array

Utilizando o React, será muito comum utilizarmos métodos de array, principalmente o map, filter, reduce e find. Eles são métodos puros, que recebem um valor e retornam outro da forma desejada.

Vejamos a seguir mais sobre os métodos de array e alguns exemplos.

Map

Esse método possibilita listar ou retornar os valores de um array, como mostra o Código 9.

const frutas = ["maçã", "banana", "laranja"];

export const ListaDeFruta = () => {
  return (
    <ul>
      {frutas.map((fruta, index) => (
        <li key={index}>{fruta}</li>
      ))}
    </ul>
  );
};
Código 9. Map

Filter

Esse método possibilita aplicar um filtro para retornar apenas o parâmetro desejado de um array como mostra o Código 10.

const numeros = [1, 2, 3, 4, 5];

export const ListarNumeroImpar = () => {
  return (
    <div>
      {numeros
        .filter((numero) => numero % 2 !== 0)
        .map((numeroFiltrado, index) => (
          <p key={index}>{numeroFiltrado}</p>
        ))}
    </div>
  );
};
Código 11. Filter

Reduce

Este método possibilita retornar o resultado da soma de todos os valores inteiros de um array como mostra o Código 12.

const numeros = [1, 2, 3, 4, 5];

export const SomaDosNumeros = () => {
  return (
    <p>{numeros.reduce((acumulador, valorAtual) => acumulador + valorAtual)}</p>
  );
};
Código 12. Reduce

Find

Este método possibilita retornar apenas o valor do array que queremos encontrar através de uma comparação, como mostra o Código 13.

const numeros = [1, 3, 4, 5, 6];

export const PrimeiroNumeroPar = () => {
  return (
    <p>{numeros.find((numero) => numero % 2 === 0)}</p> // 4
  );
};
Código 13. Find

Funções Callbacks

Funções Callback é um tipo de função que só é executada após o processamento de outra função.

O jeito de criar uma função de callback é passá-la como um parâmetro para outra função, chamando-a novamente em seguida, logo após alguma condição ou a conclusão de alguma tarefa.

No Código 14 temos um exemplo de uma função callback.

function saudacao(nome) {
  alert('Olá ' + nome);
}

function inputDoUsuario(callback) {
  var nome = prompt('Por favor insira seu nome.');
  callback(nome);
}

inputDoUsuario(saudacao);
Código 14. Função callback

Desestruturação de dados

A desestruturação é uma expressão de JavaScript que possibilita extrair dados de arrays ou objetos em variáveis distintas. Ele visa diminuir a repetição de códigos, facilitando a compreensão e manutenção, como vemos nos Códigos 15 a 17.

const aluno = {
  nome: "Jorge",
  idade: "23",
  email: "jorge@gmail.com"
};

const { nome, idade, email } = aluno;
console.log(nome);
console.log(idade);
console.log(email);
Código 15. Exemplo de código JavaScript desestruturado
export default function App() {
  const users = { Jane: "Jane", Joe: "Joe", Patrick: "Patrick" };

  return (
    <div className="App">
      <div className="App-header">
        <PersonCard name={users.Jane} />
        <PersonCard name={users.Joe} />
        <PersonCard name={users.Patrick} />
      </div>
    </div>
  );
}
Código 16. Exemplo de código React
export default function PersonCard({ name }) {
  return (
    <div className="UserCard">
      <span>
        <p>Olá, {name}</p>
      </span>
    </div>
  );
}
Código 17. Exemplo de código React com o uso da desestruturação