想要在单击按钮时在saveInfo()函数内执行disNone()函数

时间:2017-10-11 00:45:43

标签: javascript reactjs react-native ecmascript-6 react-redux

我想在点击按钮时在disNone()内执行saveInfo(): 错误:TypeError:无法读取未定义的属性“disNone”

import React, { Component } from 'react';

class Login extends Component {
constructor(props){
    super(props);

    this.state = {
        dispNone:"dispNone",
        message:"dispNone"
    };
    this.disNone = this.disNone.bind(this);
};

 disNone(){
    this.setState({
        dispNone: "dispNone",
        message:"dispBlock"
    });
}


 saveInfo(){
    this.disNone(); 
 }

render() {
    return (
       <div>
         // other code
          <button onClick={this.saveInfo}>Sign up</button>
       </div>
    );
  }
}

export default Login;

2 个答案:

答案 0 :(得分:1)

在构造函数中,除了this.disNone = this.disNone.bind(this)之外,还需要输入

this.saveInfo = this.saveInfo.bind(this);

该错误是因为safeInfo不知道this的含义,这会给您带来disNone is undefined

的错误

编辑:我们在构造函数中执行此操作,因为我们只需要bind函数一次。或者你也可以在render函数中编写它,但这意味着每次render函数执行时,你重新绑定一个浪费的函数。

第三种方法是在渲染函数中使用() => this.saveInfo(),这在任何地方都不需要任何类型的绑定,但同样,这个函数必须被创建&#34;每次render函数运行。

答案 1 :(得分:0)

添加

  

this.saveInfo = this.saveInfo.bind(this);

在你的构造函数中。 SaveInfo方法无权访问。