2016-03-31 23 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