rlu*_*uks 14 javascript reactjs axios
我在ReactJS中做一个简单的事情时收到错误"TypeError:无法读取未定义的属性'setState'.我正在尝试使用axios来填充带有响应数据的输入.到目前为止没有成功.我对axios和ReactJs都很新,所以它可能是我忽略的非常简单的东西?
在修复TypeError之后,我希望"RESPONSE TEXT"显示在表单的输入字段中.
这是我的组成部分:
class BasicInfoBlock extends React.Component {
constructor(props) {
super(props);
this.state = { name : "EventTestName" };
}
componentDidMount() {
axios
.get(getBaseUrl()+`get`)
.then(function (response) {
this.setState({name: "RESPONSE TEXT"});
//this.setState({name: response.data.name});
})
.catch((e) =>
{
console.error(e);
});
//this.setState({});
}
render(){
return(
<form className="form-horizontal">
<div className="form-group">
<label htmlFor="eventName" className="col-sm-2 control-label">Name</label>
<div className="col-sm-10">
<input type="text" id="eventName" className="form-control" placeholder="Event name" defaultValue={this.state.name}/>
</div>
</div>
</form>
);
}
}
Run Code Online (Sandbox Code Playgroud)
}
谢谢您的帮助
编辑:这不是一个重复的问题,这个问题涉及'this'在回调中不可用.选为重复的问题与bind有关.
Ben*_*erg 31
在Promise的then方法中,this
将不再引用该组件.你可以使用这样的箭头函数来修复:
componentDidMount() {
axios
.get(getBaseUrl()+`get`)
.then((response) => {
this.setState({name: "RESPONSE TEXT"});
//this.setState({name: response.data.name});
})
.catch((e) =>
{
console.error(e);
});
//this.setState({});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7192 次 |
最近记录: |