我想在点击按钮时在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;
答案 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方法无权访问。