在一个反应​​组件中,如何在静态函数中得到`this`?

cc *_*ung 8 javascript this reactjs react-jsx

试图static在反应组件中创建一个函数.该函数用于this获取其数据,但this在调用函数时超出范围.

这是一个非常简单的例子:

var Test = React.createClass({
  val: 5,
  statics: {
    getVal: function() { return this.val }
  },
  render: return( <div>{this.val}</div> )
});

Test.getVal(); => undefined!!

被称为显然this已经失去了它的范围Test.getVal().如何this进入getVal()功能?

fyi,以下标准的javascript父方法不起作用:

Test.getVal.apply( Test ); => undefined

Han*_*son 10

查看有关静力学的文档.

无论你输入什么statics都不会有实际的React组件实例的上下文,但是val你定义的属性是实际的React组件实例的属性.在实际渲染组件之前它不会存在,因为那是在构造所有非静态属性时.静态应该是与实际实例的上下文之外可用的组件相关的函数,就像例如C#中的静态函数和许多其他语言一样.

想要从statics函数中访问React组件实例似乎没有意义.也许你需要思考一下你实际想要实现的目标.如果你真的想要能够访问特定组件的属性,那么我猜你可以将实例作为参数传递给静态函数,但是当然,一旦你实际构建了一个组件,它就可以使用了.