Estudo sobre o ReactJS
- Iniciamos o webpack em um diretorio novo npm init -y
- Inslamos as dependencias: (neste caso estamos instalando versoes específica por conta de atualizações gerarem incompatibilidade com o codigos...)
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
npm i --save-dev [email protected]
- Criamos um aquivo de nome .gitignore com o seguinte conteúdo: node_modules *.log
- Criamos na raiz do projeto o arquivo webpack.config.js
- A configuração básica do arquivo tem teste conteúdo:
const webpack = require('webpack')
module.exports = { entry: './ex/index.jsx', output: { path: __dirname + '/public', filename: './bundle.js' }, devServer: { port: 8080, contentBase: './public', }, module: { loaders: [{ test: /.jsx?$/, loader: 'babel-loader', exclude: /node_modules/, query: { presets: ['es2015', 'react'] } }] } }
-
Criamos o diretório public e criamos o arquivo index.html com uma estrutura basica de html com charset = utf-8 e as tags:
Que será o container da resposta do react.
- Criamos diretorio ex e criamos o arquivo index.jsx dentro dele
- No arquivo index.jsx inserimos o seguinte conteúdo.
- Substituir a linha de teste de package.json para "dev": "webpack-dev-server --progress --colors --inline --hot"
- Executamos o webpack ( npm run dev )
- Criamos um arquivo component.jsx (path: /ex) com o seguinte conteúdo:
import React from 'react'
function () { return
}
Nota
Repare que nesta arquivo não importamos o react-dom, pois não vamos utilizar recursos do dom com react.
- No arquivo index.jsx importamos o nosso componente com import Component from './component.jsx'
- Substituimos a linha ReactDom.render(, document.getElementById('app')) por ReactDom.render( , document.getElementById('app')), que é a referencia do componente que está sendo criado.
Nota
Neste momento, colocamos a referencia ao componente com a extensão .jsx (vamos remover isso no futuro.)
-
Ao executar o script, um erro é gerado, informando que não reconhece function (do componente) Para isso, devemos export na function do component.jsx, desta forma: de:
function () { return <h1>Primeiro Componente!</h1> }
para:
export default function () { return
}
- Ate o momento usamos para referenciar o componente a extensão .jsx no import (import Component from './component.jsx').
- Mas vamos remover esta extensão e configurar o webpack para interpretar a leitura destes aquivos sem especificação da extensão. E para isso, colocamos mais uma configuração no nosso webpack.config.js:
resolve: {
extensions: ['', '.js', '.jsx']
},
- Rodamos mais uma veis o webpack (npm run dev)
- O Arrow Function é um padrão de escrita de funções a ser seguido..
No nosso exemplo, o nosso componente pode ser escrito de varias formas, vamos a elas...
Basico:
export default function () {
return <h1>Primeiro Componente! CDTS</h1>
}
Ou assim:
export default () => {
return <h1>Primeiro Componente! CDTS</h1>
}
Ou assim:
export default () => (
<h1>Primeiro Componente! CDTS</h1>
)
*Nota*
Nesta última forma, o parêntesis não significa que é a chave da função (function () {bla bla}) e sim apenas com um container onde incluiremos o retorno da função, que é implícito(não precisamos do termo return)
Os componentes recebem parametros que são passados por referencia na tag.
entao, vamos alterar o nosso componente para que ele receba um parâmetro...
Ficará assim:
export default (props) => ( <h1>{props.value}</h1> )
que também podemos escrever assim, pois neste caso só existe um parâmetro.. .
export default props => ( <h1>{props.value}</h1> )
e index.jsx colocamos os valor para o parametro: ReactDom.render(<Component value='Primeiro Componente'/>, document.getElementById('app'))
O retorno será o mesmo.
- Vamos colocar 2 componentes em um unico arquivo (mesmo que um arquivo geralmente seja um componente) No arquivo component.jsx:
const Primeiro = props => (
)const Segundo = props => (
)
export {Primeiro, Segundo}
- Vamos alterar o arquivo index.jsx que ficará com o seguinte conteúdo.
import React from 'react' import ReactDom from 'react-dom' import { Primeiro, Segundo } from './component'
ReactDom.render(
, document.getElementById('app'))
- Ao executar o webpack, o resultado sera o retorno dos dois compontents
Nota
Você também pode exportar os componentes do arquivo component.jsx colocando export antes da constante.
Assim no exemplo, porderíamos utilizar a seguint sintaxe:
export const Primeiro = props => (
)export const Segundo = props => (
// export {Primeiro, Segundo}
- Neste exemplo, criamos 2 componentes, um chamado member e outro chamado silvaFamily.
- No silvaFamily importamos o componen