React / Typescript: this.setState не является функцией - PullRequest
0 голосов
/ 04 марта 2019

Я работаю в реагировать + машинопись в первый раз.

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>
    );
  }
}

Когда я нажимаю кнопку отправки, он выдает

Uncaught TypeError: this.setState is not a function

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Нет необходимости добавлять метод конструктора или использовать связывание.Функция стрелки подходит для ваших нужд.

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>
    );
  }
}
0 голосов
/ 04 марта 2019

вам нужно связать свой метод или trasform в функционале, например

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>
    );
  }
}

Я надеюсь, что это полезно

0 голосов
/ 04 марта 2019

Пожалуйста, свяжите свою функцию отправки с этим:

this.submit = this.submit.bind (this)

...