ReactJSで簡単なことをしているときに、「TypeError:プロパティ 'setState'のundefinedを読み取れません」というエラーが発生します。 axiosを使用して入力に応答データを入力しようとしています。これまでのところ成功していません。私はaxiosとReactJの両方にとって非常に新しいので、見落としている非常に単純なものかもしれません。
TypeErrorが修正された後、フォームの入力フィールドに「応答テキスト」が表示されることを期待します。
これは私のコンポーネントです:
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>
);
}
}
ご協力ありがとうございました
編集:これは重複する質問ではありません。この質問は、コールバックで「this」が利用できないことに関連しています。重複として選択された質問はバインドに関連しています。
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({});
}