Uma biblioteca JS para a construção de UIs
https://github.com/JsBatista/workshopReact
create-react-app
nome_do_projeto
hello
cd
nome_do_projeto
hello
npm start
localhost:3000
public
}
}
src
App.js
index.js
index.html
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();
index.js
...
<div id="root"></div>
...
index.html
import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Welcome to React</h1>
</header>
<p className="App-intro">
To get started, edit <code>src/App.js</code>
</p>
</div>
);
}
}
export default App;
App.js
import React, { Component } from 'react';
class App extends Component {
render() {
return (
<div>
<p>Hello World!</p>
</div>
);
}
}
export default App;
App.js
Salvar
Parar o Servidor
Recarregar a Página
Reiniciar o Servidor
Olhar a localhost:3000
import React, {Component} from 'react';
class HelloUser extends Component {
render(){
return(
<div>
</div>
<p>Bom dia {this.props.name}!</p>
);
};
}
export default HelloUser;
HelloUser.js
import React, {Component} from 'react';
class App extends Component {
render() {
return (
<div>
<p>Hello World!</p>
App.js
<HelloUser />
</div>
);
}
}
export default App;
import HelloUser from './Components/HelloUser/HelloUser';
import React, {Component} from 'react';
class App extends Component {
render() {
return (
<div>
<p>Hello World!</p>
App.js
<HelloUser name="Gabriel Suassuna"/>
</div>
);
}
}
export default App;
import HelloUser from './Components/HelloUser/HelloUser';
class App extends Component {
render() {
return (
<div>
<p>Hello World!</p>
<HelloUser name="Gabriel Suassuna"/>
</div>
);
}
}
<HelloUser name="Vinicius Somebody"/>
<HelloUser name="Pedro Victor"/>
<HelloUser name="Matheus Navarro"/>
<HelloUser name="Luan Carvalho"/>
<HelloUser name="Hariamy Vasconcelos"/>
<HelloUser name="João Pedro Delgado"/>
App.js
<HelloUser name="Gabriel Freire"/>
class App extends Component {
render() {
</div>
);
}
}
const listaDeMembros = ["Gabriel Suassuna",
"Vinicius Somebody",...,"João Pedro Delgado"];
const listaDeComponentes = listaDeMembros.map((atual)=>{
return <HelloUser name={atual}/>
});
return (
<div>
<p>Hello World!</p>
{listaDeComponentes}
App.js
...
const listaDeComponentes = listaDeMembros.map((atual)=>{
return <HelloUser name={atual} key={atual}/>
});
...
import React, {Component} from 'react';
class HelloUser extends Component {
render(){
return(
<div>
<p>Bom dia {this.props.name}!</p>
</div>
);
};
}
export default HelloUser;
HelloUser.js
HelloUser.js
import React from 'react';
const helloUser = ( ) => {
return(
<div>
<p>Bom dia !</p>
</div>
props
{props.name}
);
}
export default helloUser;
)
)
)
import React,{Component} from 'react';
class HelloMaker extends Component {
render(){
return(
<div>
<input type="text" />
<button>Diga bom dia!</button>
</div>
);
};
}
export default HelloMaker;
HelloMaker.js
import React, { Component } from 'react';
import HelloUser from './Components/HelloUser/HelloUser';
import HelloMaker from './Components/HelloMaker/HelloMaker';
class App extends Component {
state = {
listaDeMembros: ["Gabriel Suassuna",...,"João Pedro Delgado"];
}
render() {
const listaDeComponentes = this.state.listaDeMembros.map((atual)=>{
return <HelloUser name={atual} key={atual}/>
});
return (
);
}
}
export default App;
<div>
<p>Hello World!</p>
<HelloMaker />
{listaDeComponentes}
</div>
App.js
...
state = {
listaDeMembros: ["Gabriel Suassuna", ... ,"João Pedro Delgado"]
}
render() {
const listaDeComponentes = ...
return (
<div>
<p>Hello World!</p>
<HelloMaker createNewHelloUser={this.createNewHelloUser}/>
createNewHelloUser = (newUser) => {
let listaTemporaria = [...this.state.listaDeMembros];
listaTemporaria.push(newUser);
this.setState({
listaDeMembros: listaTemporaria
});
}
...
App.js
ListaDeMembros:
Gabriel Suassuna
Vinicius Somebody
Pedro Victor
Matheus Navarro
Luan Carvalho
Hariamy Vasconcelos
João Pedro Delgado
Gabriel Freire
createNewHelloUser(Gabriel Freire)
ListaTemporaria:
Gabriel Suassuna
Vinicius Somebody
Pedro Victor
Matheus Navarro
Luan Carvalho
Hariamy Vasconcelos
João Pedro Delgado
Gabriel Freire
setState()
class HelloMaker extends Component {
state = {
currentValue: ""
}
updateCurrentValue = (event) => {
this.setState({
currentValue: event.target.value
});
}
triggerCreateNewHelloUser = () => {
this.props.createNewHelloUser(this.state.currentValue);
this.setState({
currentValue: ""
});
}
HelloMaker.js
...
render(){
return(
<div>
</div>
);
};
<input
onChange={this.updateCurrentValue}
type="text"
<button
Diga bom dia!
</button>
value={this.state.currentValue} />
onClick={this.triggerCreateNewHelloUser}>
HelloMaker.js
createNewHelloUser()
createNewHelloUser()
triggerCreateNewHelloUser()
this.props.createNewHelloUser()
createNewHelloUser()
props
<input
onChange={this.updateCurrentValue}
type="text"
value={this.state.currentValue} />
updateCurrentValue = (event) => {
this.setState({
currentValue: event.target.value
});
}
HelloMaker.js