Javascript ReactJS无法读取属性';设置状态';未定义的
将此作为参考,我试图复制类似的内容,但在控制台中遇到错误,“UncaughtTypeError:无法读取undefined的属性'setState'。我无法确定我在状态组件中丢失“this”引用的位置Javascript ReactJS无法读取属性';设置状态';未定义的,javascript,reactjs,this,Javascript,Reactjs,This,将此作为参考,我试图复制类似的内容,但在控制台中遇到错误,“UncaughtTypeError:无法读取undefined的属性'setState'。我无法确定我在状态组件中丢失“this”引用的位置 import React from 'react' import RadarInput from './radarInput' class RadarForm extends React.Component { constructor(props) { super(props);
import React from 'react'
import RadarInput from './radarInput'
class RadarForm extends React.Component {
constructor(props) {
super(props);
}
onFormSubmit = (data, cb) => {
cb(data);
}
render() {
return (
<div>
<RadarInput OnRadarSubmit={this.onFormSubmit.bind(this)} />
</div>
)
}
}
export default RadarForm
import React from 'react'
class RadarInput extends React.Component {
constructor(props) {
super(props);
this.state = {value:"Hello!", message: ''}
}
handleChange = (evt) => {
this.setState({value: evt.target.value });
}
sendContent = function(e) {
console.log("I'm in content")
console.log("this is e: ", this.state.value);
e.preventDefault();
var radarNum = this.state.value
this.setState({value: '', message: 'Please wait ...'});
this.props.OnRadarSubmit({
value: radarNum
}, function(data){
console.log("data in cb ", data.value);
this.setState({ message: data.value });
});
}
render() {
return (
<div>
Title: <div>{this.state.message}</div>
<form onSubmit={this.sendContent.bind(this)}>
Radar Number: <input type="text" value={this.state.value} onChange={this.handleChange.bind(this)} />
<input type="submit" value="Submit" />
</form>
</div>
)
}
}
export default RadarInput
从“React”导入React
从“/RadarInput”导入RadarInput
类RadarForm扩展了React.Component{
建造师(道具){
超级(道具);
}
onFormSubmit=(数据,cb)=>{
cb(数据);
}
render(){
返回(
)
}
}
导出默认雷达窗体
从“React”导入React
类RadarInput扩展了React.Component{
建造师(道具){
超级(道具);
this.state={value:“Hello!”,消息:'}
}
handleChange=(evt)=>{
this.setState({value:evt.target.value});
}
sendContent=函数(e){
log(“我在内容中”)
log(“这是e:,this.state.value”);
e、 预防默认值();
var radarNum=this.state.value
this.setState({值:'',消息:'请稍候…');
此.props.OnRadarSubmit({
价值:雷达诺
},函数(数据){
console.log(“cb中的数据”,data.value);
this.setState({message:data.value});
});
}
render(){
返回(
标题:{this.state.message}
雷达号码:
)
}
}
导出默认雷达输入
您需要先将此
设置为OnRadarSubmit()回调函数以外的变量
var self = this;
this.props.OnRadarSubmit({ value: radarNum}, function(data){
console.log("data in cb ", data.value);
self.setState({ message: data.value });
});
原因是在回调中,this
不再引用类作用域,因此通过设置self
,可以明确使用封闭作用域