当前位置: 首页 > 面试题库 >

反应这是未定义的

冷俊健
2023-03-14
问题内容

React this在promise中没有定义。这是我的代码:

export default class Album extends React.Component {

    constructor(props) {
        super(props);
    }

    componentDidMount ()  {
        console.log(this.props.route.appState.tracks);  // `this` is working
        axios({
            method: 'get',
            url: '/api/album/' + this.props.params.id + '/' + 'tracks/',
            headers: {
                'Authorization': 'JWT ' + sessionStorage.getItem('token')
            }
        }).then(function (response) {
            console.log(response.data);
            this.props.route.appState.tracks.concat(response.data); // 'this' isn't working
        }).catch(function (response) {
            console.error(response);
            //sweetAlert("Oops!", response.data, "error");
        })
    }

这是错误代码:

TypeError: this is undefined
Stack trace:
componentDidMount/<@webpack:///./static/apps/components/Album.jsx?:81:17

问题答案:

可能没有约束力this

如果您可以使用ES6语法,请尝试用箭头函数替换。它会自动绑定:

.then( (response) => {
        console.log(response.data);
        this.props.route.appState.tracks.concat(response.data); // 'this' isn't working
    } )

或手动绑定:

.then(function (response) {
            console.log(response.data);
            this.props.route.appState.tracks.concat(response.data);
        }.bind(this) )


 类似资料:
  • 我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:

  • 我必须发布{输入}数据以http://localhost:4000/predictionAxios。但是{输入}变为未定义。 我使用const而不是类Main扩展组件. onChange,它设置表单数据。 阿希奥斯邮报。 返回(表单)时带有onSubmit、onChange。

  • 获取类型错误,但使用onClick={()=

  • 构建一个小的react应用程序,将地理位置(由浏览器确定为道具)传递给子组件。 第一个组件:app.jsx 该组件确定位置,保存要声明的纬度和经度,并通过props将该信息传递给Weather.jsx组件,该组件正在工作,如下图所示: 在Weather.jsx组件中,我尝试访问这些道具,得到未定义的或空的对象。 真的不知道问题是什么,因为react dev tools显示weather组件确实在传

  • 我正在尝试将share组件与react native一起使用,但下面一直出现此错误。知道为什么吗? “\u reactNative。共有打开不是一个功能。(在“\u reactNative.Share.open({url:uri})”中,“\u reactNative。共有打开“未定义”

  • 我正在浏览react文档中关于处理https://facebook.github.io/react/docs/handling-events.html 有一部分提到了以下一行:“在JavaScript中,类方法默认不被绑定。如果您忘记绑定this.handle单击并将其传递给onClark,当实际调用函数时,这将是未定义的。" 在Codepen上提供了一个示例。我试图通过注释掉“this.hand