Axios ReactJS - 无法读取undefined的属性'setState'

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)