2016-11-09 74 views
24

我在找redux todomvc codesstatic propTypes中的static關鍵字是什麼? 感謝反應:爲什麼static propTypes

UPDATE

不知道爲什麼downvoted?這篇文章太簡單了嗎?歡迎評論。謝謝。我希望我可以刪除這篇文章。

+2

「我希望我可以刪除這篇文章。」你不需要。從三個負面投票中得到的分數可以忽略不計,只是因爲三個人不喜歡你的問題,並不意味着其他人不會覺得這個問題有用。任何使用過一段時間的人都至少有一個問題,他們有些尷尬地問(包括我自己),但這個地方的重點是幫助人們學習,甚至是「壞」問題都可以做到這一點。 – machineghost

+0

@machineghost謝謝。實際上,我閱讀了一些javascript文檔。我沒有找到「靜態」屬性。也許我沒有仔細閱讀文件。當然,'靜態'往往是其他語言。 – BAE

回答

15

static不是上一代Javascript(「ES5」)的一部分,這就是爲什麼您在舊文檔中找不到它的原因。但是,除了Internet Explorer(http://caniuse.com/#search=es6)之外,所有主流瀏覽器現在都支持「ES6」類語法的其餘部分,並且如果使用Babel等轉譯器,則可以在任何瀏覽器中使用它。大多數React用戶已經在使用Babel來傳輸他們的JSX,所以React站點(如Redux TodoMVC)認爲它是理所當然的。您可以在這裏閱讀更多關於statichttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static

對於static propTypes,propTypes需要在類本身上聲明,而不是在類的實例上聲明。換句話說,如果你使用無狀態的組件:

function Foo() { 
    this.PropTypes = somePropTypes; // bad 
    return <div></div>; 
} 
Foo.PropTypes = somePropTypes; // good 

當使用ES6班,Foo.PropTypes = somePropTypes可等效爲:

class Foo extends React.Component { 
    static PropTypes = somePropTypes; 
} 

作爲一個方面說明,在那樣的類定義屬性的能力在任何瀏覽器中都不存在(還沒有):您需要一個像Babel這樣的翻譯插件,並使用transform-class-properties插件。

8

propTypes對組件的實例並不是唯一的。他們也不會更改每個組件。因此,他們成爲班級的靜態成員是有道理的。