Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS无法读取属性';设置状态';未定义的_Javascript_Reactjs_This - Fatal编程技术网

Javascript ReactJS无法读取属性';设置状态';未定义的

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

将此作为参考,我试图复制类似的内容,但在控制台中遇到错误,“UncaughtTypeError:无法读取undefined的属性'setState'。我无法确定我在状态组件中丢失“this”引用的位置

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
,可以明确使用封闭作用域