Lorsque le formulaire soumis, la valeur doit être 2.
this.state = { dog: 1 }; this.handleSubmit = this.handleSubmit.bind(this); handleSubmit(e) {e.preventDefault(); this.setState({dog: 2})} <Form onSubmit={this.handleSubmit}><Button variant="primary" type="submit">Submit</Button></Form>
4 Réponses :
L'état du paramètre est asynchrone, il se peut donc que vous ne puissiez pas voir l'état modifié juste après l'avoir défini.
handleSubmit(e) { e.preventDefault() this.setState({dog: 2}, ()=>console.log(this.state.dog)) }
Il consolera 2
.
Cela aidera à comprendre comment setState se produit:
constructor(props) { super(); this.state = { dog: 1 }; this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit(e) { e.preventDefault() this.setState({ dog: 2 }, () => { console.log(this.state.dog) }) } render() { const { dog } = this.state; return ( <> <span>Dog Value : {dog}</span> <form onSubmit={this.handleSubmit}> <button variant="primary" type="submit">Submit</button> </form> </> ) }
class App extends Component { constructor(props) { super(); this.state = { dog: 1 }; this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit(e) { e.preventDefault(); this.setState({ dog: 2 }); } render() { return ( <form onSubmit={this.handleSubmit}> <button> Submit</button> <p>{this.state.dog}</p> </form> ); } } This works just fine. What is Form ? Did you mean form?Using your code you could try adding handleSubmit to the button's onClick to see if your state updates.
Tout d'abord, vous devez passer les accessoires dans super()
handleSubmit = (event) => { event.preventDefault() this.setState({dog: 2}) } <Form onSubmit={this.handleSubmit}> <Button variant="primary" type="submit">Submit</Button> </Form>
La fonction de flèche résoudrait le problème de this
constructor(props) { super(props); this.state = { dog: 1 }; }
c'est une bonne réponse, mais modifiez le formulaire pour qu'il soit formulaire s'il utilise bootstrap
Montrez le reste de votre code - d'où vient le composant
Form
? Passe-t-il un argument d'événement àhandleSubmit
?Honnêtement, votre logique de code semble correcte? Vous ne configurez probablement pas correctement le composant de classe.