#VemProReact #JEP #4

#VemProReact

#VemProReact #JEP #3

Logo.js

const [repeat, setRepeat] = useState();

useEffect(() => {
  setRepeat(1);
}, []);
useEffect(() => {
  console.log('repeat updated');
}, [repeat]);

#VemProReact

#VemProReact #JEP #3

...
const [countPlus, setCountPlus] = useState(0);
const [countMinus, setCountMinus] = useState(0);
...
...
const handleClickPlus = () => {
  setRepeat((repeat) => repeat + 1);
  setCountPlus((count) => count + 1);
}

const handleClickMinus = () => {
  setRepeat((repeat) => repeat - 1);
  setCountMinus((count) => count + 1);
}
...

Logo.js

#VemProReact

#VemProReact #JEP #3

...
<div className="App-logo-buttons">
  <button disabled={repeat === 6} onClick={handleClickPlus}>
    Logo +
  </button>
  <button disabled={repeat === 1} onClick={handleClickMinus}>
    Logo -
  </button>
</div>
<div>
  <p><b>Logo +</b> button was clicked {countPlus} times</p>
  <p><b>Logo -</b> button was clicked {countMinus} times</p>
</div>
...

Logo.js

#VemProReact

#VemProReact #JEP #3

O que são Template Strings?

#VemProReact

Template Strings

  • É uma string "turbinada"
  • Permite interpolar variáveis
  • Permite concatenar valores
  • Permite quebrar a string em várias linhas

Exemplos:

`Olá,
Tudo bem?`
`Olá, ${name}!`
`Olá, eu sou o ${first_name}${last_name}!`

#VemProReact

Live Code!

🤘

#VemProReact

Revisão

O que é React?

#VemProReact

Revisão

O que é JSX?

#VemProReact

Revisão

O que diferencia uma arrow function de uma function expression?

#VemProReact

Revisão

Pra que servem as props?
Como podemos modificá-las?

#VemProReact

Revisão

O que é Destructuting Assignment?

#VemProReact

Revisão

Como criamos um state em um componente?

#VemProReact

Revisão

Como tratamos os eventos em uma aplicação React?

#VemProReact

Revisão

Pra que serve a hook useEffect?

Quais são os principais casos de uso dela?

#VemProReact

Revisão

O que é Spread Operator?

#VemProReact

FLUX

O que é FLUX?

#VemProReact

FLUX

  • Foi criado pelo Facebook
  • É uma arquitetura para aplicações web
  • É um modelo de fluxo dados
  • É dividido, basicamente, em: action, dispatcher, store e view

Na teoria:

#VemProReact

FLUX

Na prática:

Action é simplesmente um objeto que define o que será modificado

Dispatcher é o intermediador de tudo, define o que, onde e como será alterado

Store é o que define a estrutura e os valores dos nossos dados, ou seja, é onde os dados estão de fato

View é onde será exibido qualquer dado para o usuário

#VemProReact

FLUX

Na prática:

Com FLUX, temos um fluxo de dados unilateral:

No mundo React, o view nada mais é do que um componente

#VemProReact

FLUX

O mais importante!

Você não vai precisar implementar o FLUX!

Isto é um conceito muito importante para se entender como funciona sua aplicação React

Não tenha medo! Agora tudo parece muito abstrato, mas no fim, tudo faz sentido!

#EuAgarantio

#VemProReact

Dúvidas?

#VemProReact

Bayon

  • Framework React desenvolvido pela UNJ
     
  • Usado em praticamente todos os projetos
     
  • Todos podem contribuir
     
  • Mantido oficialmente pelo time Netuno
     
  • Hoje é composto por vários projetos

#VemProReact

Bayon

O nome Bayon é referente a um conjunto de templos no Camboja, que se chamam Bayon.

 

A ideia por trás da escolha desse nome é que esses templos são formados por várias rochas que geram templos iguais, trazendo a ideologia de componentização.

#VemProReact

Bayon Commons

  • O principal projeto do Bayon
     
  • Baseado no Material UI
     
  • Uma lib de componentes
     
  • É o projeto que utilizaremos com mais frequência

#VemProReact

Atividade!

  1. Instalar o @bayon/commons no projeto seguindo a documentação
  2. Substituir o button de adicionar por um Button primary
  3. Substituir o button de remover por um Button default
  4. Remover o componente Text, todos os p (se existirem) e substituí-los pelo Typography
  5. Remover o componente Link e substituí-lo por um Button subtle
  6. Exibir um Toast de erro quando o repeat chegar a 6 e desabilitar o botão de adicionar

#VemProReact

Correção da atividade!

yarn.lock

<Button variant="primary" disabled={repeat === 6} onClick={handleClickPlus}>
  Logo +
</Button>

Logo.js

<Button disabled={repeat === 1} onClick={handleClickMinus}>
  Logo -
</Button>

#VemProReact

Correção da atividade!

App.js

<Typography lineHeight={2} size={16}>
  <b>Logo +</b> button was clicked {countPlus} times
</Typography>
<Typography lineHeight={2} size={16}>
  <b>Logo -</b> button was clicked {countMinus} times
</Typography>

Logo.js

<Typography lineHeight={3} size={18}>
  Edit <code>src/App.js</code> and save to reload.
</Typography>
<Button href="https://reactjs.org" variant="subtle">
  Learn React
</Button>

#VemProReact

Correção da atividade!

Logo.js

<Button variant="primary" disabled={repeat >= 6} onClick={handleClickPlus}>
  Logo +
</Button>
<Toast
  open={repeat === 6}
  type="error"
  anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
  message="O valor máximo permitido é 6!"
/>

#VemProReact

Obrigado!

#VemProReact #JEP #4

By Softplan Planejamento e Sistemas

#VemProReact #JEP #4

Template strings; Live code; Revisão; FLUX; Bayon; @bayon/commons

  • 420