2016-06-13 2 views
23

Nei componenti di reazione è preferibile impostare lo stato iniziale nel costruttore() o nel componenteWillMount()?imposta lo stato del componente di reazione iniziale nel costruttore o nel componenteWillMount?

export default class MyComponent extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.setState({key: value}); 
    } 
} 

o

export default class MyComponent extends React.Component{ 
    componentWillMount(props){ 
    this.setState({key: value}); 
    } 
} 
+0

http://stackoverflow.com/questions/38137740/which-kinds-of-initialization-is-more-appropriate-in-constructor-vs-componentwil –

risposta

34

Nel costruttore è preferibile quando si utilizzano le classi ES6, ma non utilizzare il setState API, piuttosto che fare in questo modo:

export default class MyComponent extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.state = { key: value }; 
    } 
} 

Inoltre, se si hai a disposizione le proprietà di classe (babel stage 1), quindi puoi procedere come segue:

export default class MyComponent extends React.Component{ 
    state = { key: value }; 

    render() { 
    .... 
    } 
} 
+0

Grazie. Cosa c'è di sbagliato nell'usare l'API setState? – freedrull

+0

Perché ricordo di aver letto per non mutare mai questo.stato direttamente: https://facebook.github.io/react/docs/component-api.html#setstate – freedrull

+6

Mi spiace, per essere chiari, non usarlo quando si imposta l'iniziale stato. :) Ovunque si, si. – ctrlplusb