我封装了一个名为JellMenu的菜单,我想公开像JellMenu.Item
而不是import CustomMenuItem
这样的CustomMenuItem。我不知道该怎么做。
我查看了react-native-viewpager
源代码,我认为这可能有用:
var ViewPager = React.createClass({
statics: {
DataSource: ViewPagerDataSource,
},
它会将ViewPagerDataSource
公开为ViewPager.DataSource
,对吗?我不确切地知道。什么是Es5中关键字statics
的含义,以及Es6中的替代品是什么?提前谢谢。
答案 0 :(得分:2)
它不是关键字,它只是传递给React.createClass
的对象初始值设定项中的属性名称。从the documentation开始,它用于指定React类的静态(非实例特定)部分:
statics
对象允许您定义可在组件类上调用的静态方法。
答案 1 :(得分:0)
虽然statics
仅适用于React.createClass
,但您仍可以使用ES6表示法编写静态方法。如果您使用的是ES7,那么您也可以编写静态属性。statics
对象允许您定义可以在组件类上调用的静态方法。例如:
var MyComponent = React.createClass({
statics: {
customMethod: function(foo) {
return foo === 'bar';
}
},
render: function() {
}
});
MyComponent.customMethod('bar'); // true
此块中定义的方法是static
,这意味着您可以在创建任何组件实例之前运行它们,并且这些方法无法访问您的props
或state
组件。如果您想检查static method
中道具的值,请caller
将props as an argument
传递给静态方法。
此外,您可以这样在ES6 +类中编写静态:
class Component extends React.Component {
static propTypes = {
...
}
static someMethod(){
}
}
或者像这样的课外:
class Component extends React.Component {
....
}
Component.propTypes = {...}
Component.someMethod = function(){....}