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