2014-10-02 38 views

回答

3

簡短的回答:使用classSet()http://facebook.github.io/react/docs/class-name-manipulation.html

較長的答案:

這是沒有太大的不同的反應,除了你寫一個普通的舊JavaScript,因此很多控制這裏。此外,React已經有了一個漂亮的插件,使它更容易。在這種情況下,您的組件將是這個樣子:

var ClassnameExample = React.createClass({ 
    render: function() { 
    var cx = React.addons.classSet; 
    var classes = cx({ 
     "message": true, 
     "warning": this.props.warningLevel === "3", 
     "critical": this.props.warningLevel === "5" 
    }); 
    return <p className={classes}>Test</p>; 
    } 
}); 

這裏是工作示例:http://jsbin.com/lekinokecoge/1/edit?html,css,js,output

剛剛嘗試改變這裏的值:

React.renderComponent(<ClassnameExample warningLevel="3" />, document.body); 
4

到classSet另一種方法是經常使用簡單的對象查找。

var levelToClass = { 
    "3": "warning", 
    "5": "critical" 
}; 

// ... 
render: function(){ 
    var level = levelToClass[this.props.warningLevel] || ""; 
    return <p className={"message " + level}>Test</p> 
} 

或在某些情況下,三元:

render: function(){ 
    var level = this.props.warningLevel === 3 ? "warning" 
      : this.props.warningLevel === 5 ? "critical" 
      : ""; 
    return <p className={"message " + level}>Test</p> 
} 
相關問題