我是ReactJS和JSX的新手,我对下面的代码有点问题.
我试图className
在每个属性上添加多个类li
:
我的React组件是:
var AccountMainMenu = React.createClass({
getInitialState: function() {
return { focused: 0 };
},
clicked: function(index) {
this.setState({ focused: index });
},
render: function() {
var self = this;
var accountMenuData = [
{
name: "My Account",
icon: "icon-account"
},
{
name: "Messages",
icon: "icon-message"
},
{
name: "Settings",
icon: "icon-settings"
}
/*{
name:"Help & Support (888) 664.6261",
listClass:"no-mobile last help-support last"
}*/
];
return (
{accountMenuData.map(function(data, index) {
var activeClass = "";
if (self.state.focused == index) {
activeClass = "active";
}
return (
-
{data.name}
);
})}
);
}
});
ReactDOM.render( , document.getElementById("app-container"));
Damjan Pavli.. 342
我使用ES6
模板文字.例如:
const error = this.state.valid ? '' : 'error' const classes = `form-control round-lg ${error}`
然后只需渲染它:
单线版:
另外:`` (138认同)
这是最好的答案! (4认同)
这应该是最好的答案 (4认同)
Jack.. 184
我使用类名.例如:
... var liClasses = classNames({ 'main-class': true, 'activeClass': self.state.focused === index }); return (
你不得不引入一个类名库只是为了给一个元素添加两个类,这太糟糕了:( (136认同)
@esilva你[当然可以](http://stackoverflow.com/a/32230842/24998) (5认同)
@ user959690值得注意的是,它现在[使用Webpack时由NPM安装](https://github.com/JedWatson/classnames/issues/111),所以`从'classnames'中导入classNames然后在组件中使用`className = {classNames(classes.myFirstClass,classes.mySecondClass)}`. (5认同)
@ user959690这是一个例子.当你正在做这些事情时,这个库是非常好的,你需要应用或不需要类时有复杂的逻辑.如果您正在做一些简单的事情,那么确保只使用模板,但每个案例都不同,读者应该选择适合自己工作的工具. (4认同)
无需使用外部库,请参阅下面的答案。 (4认同)
0xcaff.. 140
只需使用JavaScript.
如果要在对象中添加基于键和值的类,可以使用以下命令:
function classNames(classes) { return Object.entries(classes) .filter(([key, value]) => value) .map(([key, value]) => key) .join(' '); } const classes = { 'maybeClass': true, 'otherClass': true, 'probablyNotClass': false, }; const myClassNames = classNames(classes); // Output: "maybeClass otherClass"
甚至更简单:
const isEnabled = true; const isChecked = false;
好主意使用`className = {[listOfClasses] .join('')}`它正在为我工作谢谢! (5认同)
Jamie Hutber.. 86
不需要花哨我正在使用CSS模块,这很容易
import style from '/css/style.css';
这将导致:
换句话说,两种风格
条件语句
使用if的相同想法会很容易
const class1 = doIHaveSomething ? style.style1 : 'backupClass';
Cody Moniz.. 37
这可以通过ES6模板文字来实现:
nightlyop.. 29
您可以创建一个具有多个类名的元素,如下所示:
foo 当然,您可以使用包含类名的字符串并操作此字符串来更新元素的类名.
var myClassNammes = 'class1 class2 class3'; ...foo
Hristo Eftim.. 18
这是你用ES6做到这一点的方法:
className = {` text-right ${itemId === activeItemId ? 'active' : ''} ${anotherProperty === true ? 'class1' : 'class2'} `}您可以列出多个类和条件,也可以包含静态类.没有必要添加额外的库.
祝好运 ;)
1> Damjan Pavli..:我使用
ES6
模板文字.例如:const error = this.state.valid ? '' : 'error' const classes = `form-control round-lg ${error}`然后只需渲染它:
单线版:
另外:``
这是最好的答案!
这应该是最好的答案
2> Jack..:我使用类名.例如:
... var liClasses = classNames({ 'main-class': true, 'activeClass': self.state.focused === index }); return ({data.name} ); ...
你不得不引入一个类名库只是为了给一个元素添加两个类,这太糟糕了:(
@esilva你[当然可以](http://stackoverflow.com/a/32230842/24998)
@ user959690值得注意的是,它现在[使用Webpack时由NPM安装](https://github.com/JedWatson/classnames/issues/111),所以`从'classnames'中导入classNames然后在组件中使用`className = {classNames(classes.myFirstClass,classes.mySecondClass)}`.
@ user959690这是一个例子.当你正在做这些事情时,这个库是非常好的,你需要应用或不需要类时有复杂的逻辑.如果您正在做一些简单的事情,那么确保只使用模板,但每个案例都不同,读者应该选择适合自己工作的工具.
无需使用外部库,请参阅下面的答案。
3> 0xcaff..:只需使用JavaScript.
如果要在对象中添加基于键和值的类,可以使用以下命令:
function classNames(classes) { return Object.entries(classes) .filter(([key, value]) => value) .map(([key, value]) => key) .join(' '); } const classes = { 'maybeClass': true, 'otherClass': true, 'probablyNotClass': false, }; const myClassNames = classNames(classes); // Output: "maybeClass otherClass"甚至更简单:
const isEnabled = true; const isChecked = false;!!e) .join(' ') } /> // Output: //
好主意使用`className = {[listOfClasses] .join('')}`它正在为我工作谢谢!
4> Jamie Hutber..:CONCAT
不需要花哨我正在使用CSS模块,这很容易
import style from '/css/style.css';这将导致:
换句话说,两种风格
条件语句
使用if的相同想法会很容易
const class1 = doIHaveSomething ? style.style1 : 'backupClass';
5> Cody Moniz..:这可以通过ES6模板文字来实现:
6> nightlyop..:您可以创建一个具有多个类名的元素,如下所示:
foo 当然,您可以使用包含类名的字符串并操作此字符串来更新元素的类名.
var myClassNammes = 'class1 class2 class3'; ...foo
7> Hristo Eftim..:这是你用ES6做到这一点的方法:
className = {` text-right ${itemId === activeItemId ? 'active' : ''} ${anotherProperty === true ? 'class1' : 'class2'} `}您可以列出多个类和条件,也可以包含静态类.没有必要添加额外的库.
祝好运 ;)
8> Huw Davies..:香草JS
不需要外部库 - 只需使用ES6 模板字符串:
@RyanNerd你的意思是"ES6不是香草JS"吗?无论如何,它是,因为vanilla js意味着javascript没有任何框架.ES6是一个较新版本的javascript. - /sf/ask/17360801/
9> xsong..:也许classnames可以帮助你.
var classNames = require('classnames'); classNames('foo', {'xx-test': true, bar: false}, {'ox-test': false}); // => 'foo xx-test'
10> 小智..:只需添加,我们就可以过滤出空字符串。
className={[ 'read-more-box', this.props.className, this.state.isExpanded ? 'open' : 'close', ].filter(x => !!x).join(' ')}
11> 小智..:我认为我们不需要使用外部包来添加多个类。
我个人使用
Stacy orStacy 如果需要有条件地添加或删除类,则使用第二个。
推荐阅读
如何解决《我是否通过将我的主目录设为回购,然后在其中包含其他回购来滥用git?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何使用angularjs在复选框列表中推送选定的值》经验,为你挑选了1个好方法。 ... [详细] 如何解决《修改strace以捕获并替换打开的系统调用中的文件名》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Make使线程安全》经验,为你挑选了1个好方法。 ... [详细] 如何解决《d3.js将缩放行为更改为语义缩放》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Android6.0权限-放置权限请求的位置?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《十进制舍入到2精度,使X转换为X.00C#》经验,为你挑选了1个好方法。 ... [详细] 如何解决《C++模板化函数可以选择成员变量吗?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Ubuntugraphviz'sfdp'无效》经验,为你挑选了2个好方法。 ... [详细] 如何解决《Aurelia有替代品吗?》经验,为你挑选了0个好方法。 ... [详细] 如何解决《使用apachespark迭代字符串》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何使用reactjs添加平滑滚动返回顶部按钮?》经验,为你挑选了2个好方法。 ... [详细] 如何解决《"int&&"和"auto&&"之间的不同行为》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用Node.js路径模块返回目录》经验,为你挑选了1个好方法。 ... [详细] 如何解决《hybrid_property表达式中的if语句》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么datanode将块位置信息发送到namenode?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在JavaScript中删除事件列表器》经验,为你挑选了1个好方法。 ... [详细] 如何解决《惯用语Clojure功能别名》经验,为你挑选了1个好方法。 ... [详细] 吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1如何将ARG值传递给ENTRYPOINT?
- 2仅在$ touch为true时显示的角度ng-messages
- 3将Spark与Cassandra结合使用?
- 4ASP.NET 5中的子域路由
- 5GitHub:如何对超过1500行的新文件进行代码审查
- 6编译'com.firebase:firebase-client-android:2.5.0'时出现build.gradle错误
- 7将iOS应用程序上传到iTunes Connect时出现问题:"符号工具失败"
- 8可能有损转换从double到int并且找不到符号
- 9将TensorFlow LSTM转换为synapticjs
- 10CSS模块组成
- 11对象在-z和-x角的z轴上翻转180度
- 12在IPython笔记本中更改绘图窗口大小
- 13使用来自不同HTML属性的项填充数组
- 14Umbraco将"IPublishedContent"类型转换为"CustomModel"类型
- 15功能编程:Curry&Fold - 什么是词源?
- 16Android Widget更改背景颜色
- 17ffmpeg寻求计算错误的字节范围?
- 18什么是__methods__,为什么调用__getattr__?
- 19Ember.js JSON API混乱
- 20Velocity.js绕中心轴旋转
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有