Ser*_*rov 5 html javascript reactjs
我是 React 新手,之前经常使用 Angular。在 Angular 中,根据变量分配一些类是尽可能简单的,如下所示:
<p ng-class="{warning: warningLevel==3, critical: warningLevel==5}">Mars attacks!</p>
Run Code Online (Sandbox Code Playgroud)
我如何使用 React 在模板中做类似的事情?
classSet 的替代方法通常是使用简单的对象查找。
var levelToClass = {
"3": "warning",
"5": "critical"
};
// ...
render: function(){
var level = levelToClass[this.props.warningLevel] || "";
return <p className={"message " + level}>Test</p>
}
Run Code Online (Sandbox Code Playgroud)
或者在某些情况下是三元:
render: function(){
var level = this.props.warningLevel === 3 ? "warning"
: this.props.warningLevel === 5 ? "critical"
: "";
return <p className={"message " + level}>Test</p>
}
Run Code Online (Sandbox Code Playgroud)
简短回答:使用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>;
}
});
Run Code Online (Sandbox Code Playgroud)
这是工作示例:http://jsbin.com/lekinokecoge/1/edit ?html,css,js,output
只需尝试更改此处的值:
React.renderComponent(<ClassnameExample warningLevel="3" />, document.body);
Run Code Online (Sandbox Code Playgroud)