2016-09-20 9 views
15

Proszę nie zamykać tego pytania przed całkowitym przeczytaniem. Może to brzmieć jak pytanie, na które można odpowiedzieć przede wszystkim swoją opinią. Ale dlaczego istnieją dwie implementacje PropTypes? Który z nich jest preferowany?statyczne typy Propozycji Vs React.PropTypes

Jednym ze sposobów jest użycie słowa kluczowego static i zdefiniowanie naszego propTypes.

class App extends React.Component { 
    static propTypes = { 
    ... 
    } 
} 

Innym sposobem jest zrobić coś takiego:

class App extends React.Component { 
    ... 
} 

App.propTypes = { 
    ... 
} 

możemy usunąć z propTypes jeśli używamy static słowa kluczowego w czasie budowania aplikacji do produkcji? Ponieważ usuwanie propTypes jest zalecane w celu zwiększenia wydajności.

+0

Chcesz wiedzieć, która metoda jest preferowana, jeśli jesteś w środowisku, w którym Obie wersje, po prostu dostałem komentarz do recenzji kodu, aby preferować statyczny sposób, ale nie jestem przekonany co do jego zalet w porównaniu z metodą 'App.propTypes = {}' way – d3ming

Odpowiedz

2

myślę jego ponieważ pierwsza wersja

class App extends React.Component { 
    static propTypes = { 
    ... 
} 
} 

nie jest ważny ES6. Nie możesz mieć zmiennej statycznej przypisanej w deklaracji klasy. Jeśli chcesz użyć tej wersji, musisz ustawić transpilator tak, aby zawierał ES7. Przynajmniej to przypuszczam, biorąc pod uwagę ustawienia, które mam w pracy, a ustawienia, których teraz używam.

14

To jest wersja ES7

class App extends React.Component { 
    static propTypes = { 
    ... 
    } 
} 

natomiast jest to wersja ES6

class App extends React.Component { 
    ... 
} 

App.propTypes = { 
    ... 
} 

Osobiście wolę wersję ES7 ponieważ ma większy sens, aby wyświetlić propTypes w górnej części składowej , aby dać przegląd tego, co jest potrzebne do renderowania komponentu (podobne do parametrów wymaganych dla funkcji).

Niezależnie od używanej wersji, jeśli chcesz usunąć propTypes do produkcji, musisz użyć https://github.com/oliviertassinari/babel-plugin-transform-react-remove-prop-types. Możesz również użyć opcji https://github.com/thejameskyle/babel-react-optimize, która zawiera powyższą transformację oraz kilka innych gadżetów, ponieważ prawdopodobnie zechcesz dodatkowo zoptymalizować swoją aplikację (:

+0

@Mihir robi to odpowiedź na twoje pytanie? Jeśli tak, możesz Zaakceptuj to? –

Powiązane problemy