2017-06-21 78 views
3

我正在使用普通構造函數重構基於es6類的React組件,然後綁定方法並在該構造方法中定義狀態/屬性。事情是這樣的:React中仍然需要使用自動綁定和屬性初始值設定項的構造函數

class MySpecialComponent extends React.Component { 
    constructor(props) { 
    super(props) 
    this.state = { thing: true } 
    this.myMethod = this.myMethod.bind(this) 
    this.myAttribute = { amazing: false } 
    } 

    myMethod(e) { 
    this.setState({ thing: e.target.value }) 
    } 
} 

我想重構這個讓我自動綁定功能,並使用屬性初始化的狀態和屬性。現在,我的代碼看起來是這樣的:

class MySpecialComponent extends React.Component { 
    state = { thing: true } 
    myAttribute = { amazing: false } 


    myMethod = (e) => { 
    this.setState({ thing: e.target.value }) 
    } 
} 

我的問題是,我還需要構造函數?或者這些道具也是自動飛行的?我本來希望仍然需要構造函數,幷包含super(props),但我的代碼似乎正在工作,我很困惑。

感謝

+3

如果您沒有定義構造函數,則會自動使用傳遞的參數調用父構造函數。 'constructor(... args){super(... args); }'基本上是默認的構造函數。 –

+0

如果組件的狀態依賴於它的道具,你將在構造函數中進行必要的初始化。如果不管道具如何,狀態都是相同的,例如你的例子就是這種情況,那麼你很樂意跟你寫的東西走。 –

+0

注意,所有這些事情仍然發生在構造函數內部,它只是不同的語法。這可能有點令人困惑。另外,如果你想從參數值初始化你的實例,你仍然需要一個'構造函數'定義,但是無論如何,無論如何,所有東西都會被拋入到'props'對象中。 – Bergi

回答

1

,除非你需要引用props在初始狀態的對象你並不需要一個明確定義構造函數。

+1

我們可以在沒有構造函數的情況下引用初始狀態的'pops',對嗎?例如:'state = {{0}}} {}}} {loop}再現:this.props.maxLoops, } –

相關問題