"这"虽然可以,但是" this.state"无法使用

时间:2016-07-07 04:28:44

标签: reactjs console.log

componentDidMount : function()
{
    console.log(this);//1
    console.log(this.state);//2
}

第1行显示所有细节,不包括所有状态变量,但第2行给出空对象。为什么?我如何访问状态变量或其他函数?

1 个答案:

答案 0 :(得分:1)

这是预期的,因为在使用之前需要定义状态。 ES6类的常用方法是在构造函数中定义初始状态,例如:

class MyCmp extends React.Component {
    constructor() {
        super(); // don't forget to call superclass constructor
        this.state = {foo: 1};
    }

    componentDidMount() {
        console.log(this);//1
        console.log(this.state);//2
    }
}

如果您使用提案级JavaScript(例如,如果您在Babel配置中将stage-0或其他阶段号作为配置文件),那么您也可以将其定义为类属性:

class MyCmp extends React.Component {
    state = {
        foo: 1
    };

    componentDidMount : function() {
        console.log(this);//1
        console.log(this.state);//2
    }
}

如果您不使用ES6课程,您可以执行以下操作:

var MyCmp = React.createClass({
    getInitialState: function() {
        return {
            foo: 1
        }
    },
    componentDidMount : function() {
        console.log(this);//1
        console.log(this.state);//2
    }
}

我希望有所帮助。享受React!