首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Axios ReactJS -无法读取未定义的属性“”setState“”

Axios ReactJS -无法读取未定义的属性“”setState“”
EN

Stack Overflow用户
提问于 2016-12-08 23:15:36
回答 1查看 13.5K关注 0票数 21

在ReactJS中做一件简单的事情时,我收到一个错误"TypeError: Cannot read property 'setState‘of undefined“。我正在尝试使用axios来填充响应数据。到目前为止还没有成功。我对axios和ReactJs都是新手,所以它可能是我忽略的非常简单的东西?

我希望在TypeError修复后,“响应文本”会出现在表单的输入字段中。

这是我的组件:

代码语言:javascript
复制
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”在回调中不可用有关。选择为重复的问题与绑定相关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 23:20:08

在您的Promise的then方法中,this将不再引用该组件。您可以使用如下箭头函数进行修复:

代码语言:javascript
复制
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({});
}
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41042763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档