React
React
npx create-react-app my-app --template typescript
yarn add eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-config-prettier eslint-plugin-prettier prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser -D
"eslint.validate": [
"javascript",
"javascriptreact",
{ "language": "typescript", "autoFix": true},
{ "language": "typescriptreact", "autoFix": true}
],
yarn add eslint-import-resolver-typescript -D Referências
yarn add react-redux redux
yarn add -D @types/react-redux
https://www.youtube.com/watch?v=OXxul6AvXNs&t=11s
Ponto-01
import ReactDOM from 'react-dom' import React from 'react'
const tag = Olá React !!! const el = document.getElementById('root'); ReactDOM.render(
Ponto-02
import ReactDOM from 'react-dom' import React from 'react' import './index.css'
const tag = Olá React !!! const el = document.getElementById('root'); ReactDOM.render(
Ponto-03
export default function Primeiro() { return 'Primeiro Componente' }
como default, a function nem precisa ter nome, pode ser anonima ()
Ponto-04
import React from 'react';
export default function Primeiro() { return
Primeiro Componente
; }em versões atuais, o import não é necessário
Ponto-05
Pode utilizar extensão js, no entanto, utilizar jsx ajuda o auto preenchimento
Ponto-06
export default function ComParametro(props) { console.log(props); return (
); };Ponto-07
passar números com {}
Ponto-08
export default function ComParametro(props) { console.log(props); props.nota = 10; return (
); };Propriedades são readonly, não podem ser mudadas
Ponto-09
Em jsx não pode existe mais de um componente, logo, no mínimo deve ser envolvido com um DIV
Assim como pode utilizar um Fragmento <> </>
import React from 'react';
export default function Fragmento(props) { return ( <>
Fragmento
cuidado com esse erro
</> ) }Neste formato não pode-se atribuir propriedade <valor="kkkk">
ou
import React from 'react';
export default function Fragmento(props) { return ( <React.Fragment>
Fragmento
cuidado com esse erro
<React.Fragment/> ) }Utilizando neste formato, pode-se utilizar propriedades <React.Fragment valor="kkkkk">
Ponto-10
export default _ => { return (
) }Função Arrow que descarta o parametro
Ponto-11
export default _ =>
Forma mais reduzida
Ponto-12
import React from 'react'; import './Card.css';
export default props => { return (
Utilização de class, deve ser className
Ponto-13
Pode-se baixar fontes e disponibilizar colocando via link no index.html
Ponto-14
export default props => { return (
Ponto-15
export default props => { return (
Uma das forma de passar um parâmetro do pai para o filho
Outra forma, é repassar todo props por spread
export default props => { return (
Ponto-16
<Familia sobrenome="Motton">
<FamiliaMembro nome="Eduardo" />
{/*
<FamiliaMembro nome="Célia" />
<FamiliaMembro nome="Bheatriz" />
<FamiliaMembro nome="Henrique" />
*/}
</Familia>
Forma de comentar um código React (Atalho meu: Ctrl + ";")
Ponto-17
export default props => { return (
Pode utilizar como a seguir, é apenas um exemplo
import React, {cloneElement} from 'react'
/*eslint-disable */ export default props => { return (
Ponto-18
export default props => { return (
Forma de passar as props para o filho unitário
Ponto-19
export default props => { return (
Iterando sobre o array de children e passando as props do pai para cada um
Outro formato utilizando direto o array
export default props => { return (
Dá um problema devido a falta de um atributo "key", que pode ser passado assim :
export default props => { return (
Ponto-20
export default props => { const li1 =
-
{li1}
Demonstração de uma montagem manual
Ponto-22
export default props => { const li1 =
-
{lis}
Forma através de um map criado um array de "
CONCEITOS de HOOKS
useState -> estado no componente.
useEffect -> efeito colateral, dispara de acordo com as dependências.
useRef -> objeto imutável, por referência, atributo current, a modificação do mesmo não reflete em disparar nova renderização. Pode ser utilizado com atributo ref no componente HTML, onde a variável do useRef apontará diretamente para o componente HTML, podem por exemplo setar focus.
useMemo -> Retorna um valor memoizada
useCallback -> Retorna uma função memoizada; gera uma espécie de cache do componente
Exemplo de Context API
import './App.css' import React, { useState } from 'react' import { BrowserRouter as Router } from 'react-router-dom'
import Menu from '../components/layout/Menu' import Content from '../components/layout/Content'
import DataContext, { data } from '../data/DataContext'
const App = props => { const [state, setState] = useState(data)
return (
<DataContext.Provider value={data}>
<div className="App">
<Router>
<Menu />
<Content />
</Router>
</div>
</DataContext.Provider>
)
}
export default App
import React, { useContext } from 'react' import PageTitle from '../../components/layout/PageTitle' import SectionTitle from '../../components/layout/SectionTitle'
import DataContext from '../../data/DataContext'
const TesteContext = (props) => {
const context = useContext(DataContext);
return (
<div className="UseContext">
<PageTitle
title="Hook UseContext - Teste Context"
subtitle="Aceita um objeto de contexto e retorna o valor atual do contexto!"
/>
<SectionTitle title="Execício #01" />
<div className="center">
<span className="text">{context.text}</span>
<span className="text">{context.number}</span>
</div>
</div>
)
}
export default TesteContext
NextJS
npx create-next-app
Ant Design
https://ant.design/docs/react/use-with-create-react-app
yarn add antd
ou
npm i antd
Next.JS
npm run build npm start
desta forma será executado em cenário de produção
-> npm install [email protected] --save -> import 'primeflex/primeflex.css';
https://js.devexpress.com/NonCommercial/
Ferramentas
https://fonts.google.com/ https://digitalsynopsis.com/design/beautiful-color-gradient-palettes/ https://uigradients.com/ https://content.breatheco.de/en/how-to/nvm-install-windows
https://console.firebase.google.com/?pli=1
Referências
https://github.com/cod3rcursos/curso-react-redux
A estudar
React.RefForwardingComponent e forwardRef
Firefox : ADD-ONS
https://addons.mozilla.org/en-US/firefox/addon/react-devtools/
https://addons.mozilla.org/en-US/firefox/addon/react-context-devtool/
VIDEOS
https://www.youtube.com/watch?v=KhuHgLdwIsg&list=PLE0DHiXlN_qpm0nMlvcVxG_O580IXmeRU