React:Changer la valeur du State
State avec un objet Simple
Créer la component ExempleState1 permettant de changer du state avec un objet simple
ExempleState1.js
import React, { Component } from "react";
class ExempleState1 extends Component {
constructor(props)
{
super(props)
this.state={
variable1:''
}
}
//fin constructeur
changerVariable1=(event)=>
{
this.setState({
variable1:"Nouvelle Valeur"
})
}
render() {
return (
<div>
variable1={this.state.variable1}
<input type="button" onClick={this.changerVariable1} value="Changer Variable1"/>
</div>)
;
}
}
export default ExempleState1;
App.js
import React from 'react';
import './App.css';
import ExempleState1 from './components/ExempleState1/ExempleState1';
class App extends React.Component{
constructor(props)
{
super(props);
}
render()
{
return (
<div>
<ExempleState1 />
</div>
);
}
}
export default App;
Exemple 2
Récuper la valeur d'un input la sauvegarder dans la variable State
Exemple 3
Exercice
State avec un objet complexe
Créer la component ExempleState2 permettant de changer du state avec un objet complexe
ExempleState2.js
import React, { Component } from "react";
class ExempleState2 extends Component {
constructor(props)
{
super(props)
this.state={
produit:{
libelle:'produit1',
prix:45.41,
marque:'marque1'
}
}
}
changerLibelle=(event)=>
{
this.setState({
produit:{
...this.state.produit, /*Récuper le produit courant */
libelle:"Nouvelle libelle"} /*Puis changer la valeur d'un attribut */
})
}
changerPrix=(event)=>
{
this.setState({
produit:{
...this.state.produit,
prix:210}
})
}
changerMarque=(event)=>
{
this.setState({
produit:{
...this.state.produit,
marque:"Nouvelle marque"}
})
}
render() {
return (
<div>
Libelle: {this.state.produit.libelle}
<input type="button" onClick={this.changerLibelle} value="Changer"/>
<br/>Libelle: {this.state.produit.prix}
<input type="button" onClick={this.changerPrix} value="Changer"/>
<br/>Libelle: {this.state.produit.marque}
<input type="button" onClick={this.changerMarque} value="Changer"/>
</div>);
}
}
export default ExempleState2;
App.js
import React from 'react';
import './App.css';
import ExempleState2 from './components/ExempleState2/ExempleState2';
class App extends React.Component{
constructor(props)
{
super(props);
}
render()
{
return (
<div>
<ExempleState2 />
</div>
);
}
}
export default App;
Exemple 2
import { Component } from "react";
class Calculatrice extends Component
{
constructor()
{
super()
this.state={
num1:0,
num2:0,
resultat:0,
afficher:false,
operation:''
}
}
getvalue=(event)=>{
this.setState({
[event.target.name]:Number(event.target.value),
afficher:false
})
}
plus=(event)=>{
this.setState({
operation:'+'
})
}
moins=(event)=>{
this.setState({
operation:'-'
})
}
egale=()=>{
let r=0;
if(this.state.operation=='+')
{
r=this.state.num1+this.state.num2
}
else if(this.state.operation=='-')
{
r=this.state.num1-this.state.num2
}
this.setState({
resultat:r,
afficher:true
})
}
render()
{
return(<>
<input type="number" name="num1" onChange={this.getvalue}/>
<input type="button" name="plus" onClick={this.plus} value="+"/>
<input type="button" name="moins" onClick={this.moins} value="-"/>
<input type="number" name="num2" onChange={this.getvalue}/>
<input type="button" onClick={this.egale} value="="/>
<br/>
num1={this.state.num1}
<br/>
num2={this.state.num2}
<br/>
=
<br/>
{
(this.state.afficher==true? (<h1>{this.state.resultat}</h1>):'')
}
</>)
}
}
export default Calculatrice
Exercice Quess the number
import { Component } from "react";
class RandomGame extends Component
{
constructor()
{
super()
this.state={
message:'',
nessais:0,
userNombre:'',
rand:Math.floor(Math.random()*10)
}
}
getValue=(event)=>{
this.setState({
[event.target.name]:event.target.value
})
}
verifier=(event)=>{
if(Number(this.state.userNombre)==this.state.rand)
{
this.setState({
message:"Bravo",
rand:Math.floor(Math.random()*10),
nessais:0
})
}
else if(Number(this.state.userNombre)>this.state.rand)
{
if(this.state.nessais>4)
{
this.setState({
message:"plus petit",
nessais:this.state.nessais+1
})
}
else
{
this.setState({
message:"vous avez perdu",
rand:Math.floor(Math.random()*10),
nessais:0
})
}
}
else
{ if(this.state.nessais>4)
{
this.setState({
message:"plus grand",
nessais:this.state.nessais+1
})
}
else
{
this.setState({
message:"vous avez perdu",
rand:Math.floor(Math.random()*10),
nessais:0
})
}
}
}
render()
{
return(>>
{this.state.rand}
>h1>nombre essaies:{this.state.nessais}>/h1>
>input type="number" name="userNombre" onChange={this.getValue} />
>input type="button" onClick={this.verifier} value="verifier"/>
{this.state.message}
>/>)
}
}
export default RandomGame