2015-10-05 76 views
4

我即將進行下一次我的網頁有反應,我找不到如何把一個可選的屬性到組件,例如:可選屬性與之反應JSX

<ReactBootstrap.ProgressBar active now={this.state.current} max={this.state.total}/> 

我要添加活動只有在ProgressBar裏面的屬性this.state.current == this.state.total

我該怎麼做?

而且,有可能是一個簡單的方法,以兩個選項活躍剝離之間切換?像

<ReactBootstrap.ProgressBar {this.state.current==this.state.total ? stripped : active} 
    now={this.state.current} max={this.state.total}/> 

回答

9

的東西,如果組件正確處理false值,只需隨時添加道具:

let stripped = this.state.current === this.state.total; 

<ReactBootstrap.ProgressBar 
    stripped={stripped} 
    active={!stripped} 
    now={this.state.current} 
    max={this.state.total} 
?> 

如果你絕對必須通過一個或另一個,你可以創建一個對象,並將其擴展到元素:

let props = { 
    [this.state.current === this.state.total ? 'stripped' : 'active']: true, 
    now: this.state.current, 
    max: this.state.total, 
}; 

<ReactBootstrap.ProgressBar {...props} /> 
+0

嗯。我不知道** active = false **與不存在的屬性具有相同的含義。 謝謝。感謝{... props} – zamuka

+1

好吧,我假設組件做了類似'if(this.props.active){...}',所以不設置或設置爲'false'是一樣的。 –