我是React的新手,之前和Angular合作过很多次。 在Angular中,尽可能简单地根据变量分配一些类:
<p ng-class="{warning: warningLevel==3, critical: warningLevel==5}">Mars attacks!</p>
如何使用React在模板中执行类似的操作?
答案 0 :(得分:4)
简答:使用classSet()
:http://facebook.github.io/react/docs/class-name-manipulation.html
更长的答案:
在React中没有什么不同,除了你写一个普通的旧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);
答案 1 :(得分: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>
}