2016-03-31 19 views
5

我正在查看React文档并且遇到了静态方法。我想知道在什么情况下它可能是有用的,想不出任何。React中的静态方法

在React中构建组件时,有没有一种特定的场景可以使用静态方法?

回答

6

defaultPropspropTypes是React组件的静态成员,它们不会针对每个实例进行更改。请参阅https://facebook.github.io/react/docs/reusable-components.html

静态属性的一个示例是能够跟踪对象的创建次数(不是特定于React)。请注意,大多数情况下,如果您正在修改状态,则静态方法是一种代码异味。

var Contacts = React.createClass({ 
    statics: { 
    instanceCount: 0 
    }, 
    getInitialState: function() { 
    Contacts.instanceCount++ 
    return {}; 
    }, 
    render: function() { 
    return (<div > Hello { 
     this.props.name 
    } < /div>); 
    } 
}); 
console.log(Contacts.instanceCount) // 0 
ReactDOM.render(< Hello name = "World"/> , 
    document.getElementById('container') 
); 
console.log(Contacts.instanceCount) // 1 

另一个例子是一种存储常量的方法。

var Contacts = React.createClass({ 
    statics: { 
    MAX_VALUE:100 
    }, 
    render: function() { 
    return (<div > Hello { 
     this.props.name 
    } < /div>); 
    } 
}); 

if (someValue > Contacts.MAX_VALUE) { 

} 
+0

有一个常规的方法,并在组件内调用它,并有一个静态方法有什么区别? – ramesh

+0

React可让您使用两者,它们的行为相同。通常情况下,任何不会改变的东西都可以在原型上或作为构造函数的属性,因此它使用单个副本。主要区别在于,如果将其设置在原型上,则可以将其重写为每个实例 –

+0

您是否有一个静态方法比另一个有利的特定示例? – ramesh