静态对象是否适用于ES6类 应对 </跨度> ?
class SomeComponent扩展了React.Component {
render(){ // … }
}
React.statics = { someMethod:function(){ // … }};
当我做SomeComponent.someMethod()时,像上面这样的东西给了我未定义的方法someMethod 鈥
虽然 statics 只适用于 React.createClass ,你仍然可以用ES6表示法编写静态方法。如果您使用的是ES7,那么您也可以编写静态属性。
statics
React.createClass
您可以这样在ES6 +类中编写静态:
class Component extends React.Component { static propTypes = { ... } static someMethod(){ } }
或者像这样的课外:
class Component extends React.Component { .... } Component.propTypes = {...} Component.someMethod = function(){....}
如果你想像前一样写它,那么你必须设置 stage: 0 关于巴贝尔(自实验以来)。
stage: 0
的 无需实例化组件即可访问静态。 强> 通常它们不是那么有用,但有一些特殊情况。例如,当您通过执行ACTION PERFORM离开当前页面时进行路由,然后通过静态方法,您可以保持/询问用户是否确实要离开页面。 例如:
exampleComponent= React.createClass({ statics:{ willTransitionFrom: function(transition,component){ // check any state here or value Aasked the user. } } });
的 它暴露了willTransitionTo和willTransitionFrom生命周期方法 强> 。两者都特别有用,因为您可以在实例化组件之前实际取消转换。
statics 仅适用于React组件, 检查文档 。
statics 只适用于 React.createClass 。只需将方法声明为静态类方法:
class SomeComponent extends React.Component { static someMethod() { //... } render() { // ... } }
关于
React.statics = { ... }
你真的在创造一个 statics 物业 React 宾语。该财产没有 神奇 扩展您的组件。
React