Je travaille pour la première fois dans react + dactylographié.
Uncaught TypeError: this.setState is not a function
Lorsque je clique sur le bouton d'envoi, il lance
interface IState {
stateval: number;
}
class Forgotpassword extends React.Component<any, IState> {
constructor(props: any){
super(props);
this.state = { stateval: 1 };
}
public submit() {
this.setState({ stateval:2 });
}
public render() {
const { stateval} = this.state;
return (
<div className="App">
<Button onClick={this.submit}>Send OTP</Button>
</div>
);
}
}
3 Réponses :
Veuillez lier votre fonction d'envoi à ceci:
this.submit = this.submit.bind (this)
Il n'est pas nécessaire d'ajouter la méthode constructeur ou d'utiliser bind. Une fonction de flèche convient à vos besoins.
import React, { Component } from 'react';
interface IState {
stateval: number;
}
export default class Forgotpassword extends Component<any, IState> {
state = {
stateval: 2
}
public submit = () => this.setState({ stateval: 2 });
public render() {
return (
<div className="App">
<Button onClick={this.submit}>Send OTP</Button>
</div>
);
}
}
vous devez lier votre méthode ou la transformer en fonctionnelle comme
interface IState {
stateval: number;
}
class Forgotpassword extends React.Component<any, IState> {
constructor(props: any){
super(props);
this.state = { stateval: 1 };
}
const submit = () => {
this.setState({ stateval:2 });
}
const render = () => {
const { stateval} = this.state;
return (
<div className="App">
<Button onClick={this.submit}>Send OTP</Button>
</div>
);
}
}
j'espère que cela sera utile
y a-t-il un moyen d'imprimer un objet, car JSON.stringify () & conssole.log () ne fonctionne pas en typographie
essayez d'abord d'imprimer une simple chaîne, console.log ("Salut") si cela fonctionne, console.log c'est ok, ça doit marcher
a fonctionné après l'ajout de la règle "no-console": false dans le fichier tslint.json, merci
ajoutez
this.submit = this.submit.bind (this);à votre constructeur.oupublic submit = () => {this.setState ({stateval: 2}); }le
cecontexte du bouton, est le bouton. vous devez lier la fonction de soumission à la classe ForgotPasswordIndique si la fonction de liaison appelle ou utilise des fonctions fléchées.