对映射项应用 CSS 样式

Apply CSS styling to a mapped item

我有一个项目列表,这些项目是设置页面的复选框。这些存储在 const items 中,如下所示:

const ITEMS = [
    ["youtube", "YouTube"],
    ["videos", "Videos"],
    ["facebook", "Facebook"],
    ["settings", "Settings"],
]

目前,这四项只是作为列表项列出。我现在拥有的是:

但我想要的是:

我正在考虑应用检查以查看子类别是否属于该父类别,并对子类别应用某种类型的缩进。是否可以通过 map 来完成(这就是我遍历此数组的方式)?或者有没有更聪明、更有效的方法来解决这个问题?

这是我呈现复选框的方式:

item: function(i) {
    return (
        <div className="checkbox">
            <label>
                <input type="checkbox" checked={this.state.items[i[0]]}/>
                {i[1]}
            </label>
        </div>
    )
}

render: function() {
    return (
        <div className="col-sm-12">
            {_(ITEMS).map(this.item, this)}
        </div>
    )
} 

使用一些 'dirty' 代码,您可以使用:https://jsfiddle.net/1sw1uhan/

const ITEMS = [
    ["youtube", "YouTube"],
    ["videos", "Videos"],
    ["facebook", "Facebook"],
    ["settings", "Settings"],
]

var list = $('<ul>');
$.each(ITEMS, function( index, value ) {
 if ((index+1)%2 == 0 && index != 0){
  var sublist = $('<ul>').append($('<li>').text(value[1]).attr('id', value[0]));
 } else {
  var sublist = $('<li>').text(value[1]).attr('id', value[0]);
 }
 list.append(sublist);
})
$('#somediv').append(list);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="somediv">

</div>

我建议您使用数组中的对象。因此,您不仅可以将 属性 映射到每个项目。为了仅使用普通 Javascript 访问它,我会使用 for-Loop 因为它与旧浏览器兼容。我做的一个例子,可以在这里找到:

https://jsfiddle.net/morrisjdev/vjb0qukb/