尝试在react组件中创建静态函数.该函数使用它来获取其数据,但在调用该函数时,这超出了范围.
这是一个非常简单的例子:
var Test = React.createClass({ val: 5,statics: { getVal: function() { return this.val } },render: return( <div>{this.val}</div> ) }); Test.getVal(); => undefined!!
显然,当调用Test.getVal()时,它已经失去了它的范围.如何在getVal()函数中获取它?
fyi,以下标准的javascript父方法不起作用:
Test.getVal.apply( Test ); => undefined
解决方法
查看
the docs on statics.
无论你在静态中放置什么都不会有实际的React组件实例的上下文,但是你定义的val属性是实际的React组件实例的属性.在实际渲染组件之前它不会存在,因为那是在构造所有非静态属性时.静态应该是与实际实例的上下文之外可用的组件相关的函数,就像例如C#中的静态函数和许多其他语言一样.
想要从静态函数访问React组件实例似乎没有意义.也许你需要思考一下你实际想要实现的目标.如果你真的想要能够访问特定组件的属性,那么我猜你可以将实例作为参数传递给静态函数,但是当然,一旦你实际构建了一个组件,它就可以使用了.