Reactjs新手。帮我定义data.map classname。比如classname =“plan- {plan.flag}”(表示为class =“plan-red”)。如何在双引号中包含数据值?
import React, { Component } from 'react';
import { Grid,Row,Col} from 'react-bootstrap';
var data = [{"aufr1":5,"dltp3":"Exclusive","cobr3":4,"lidp4":100,"stpd9":"[null]","plnm2":"plan","mpsadvid":5498,"qnty0":2350000,"lnnm3":"PR","prob5":100,"RNum":0,"llst1":"Approved","flag":"red"}];
export default class Report extends Component {
render() {
return (
<Grid id="report">
{
data.map(function(plan,i){
return (
<div className="data-wrapper plan-"+{plan.flag} key={i}>
<div className="row-wrapper plan-header">
<Row className="show-grid ">
<Col sm={3} md={3} className="plan-name">
<h6>Plan</h6>
<span>{plan.plnm2}</span>
</Col>
<Col sm={3} md={3} xsHidden>
<h6>Id</h6>
<span>{plan.plid7}</span>
</Col>
<Col sm={3} md={3} xsHidden>
<h6>Opp</h6>
<span>{plan.adas4}</span>
</Col>
<Col sm={3} md={3} xsHidden>
<h6>Mps Id</h6>
<span>{plan.llst1}</span>
</Col>
</Row>
</div>
</div>
);
})
}
</Grid>
);
}
}
答案 0 :(得分:2)
当您设置类名时请记住,+
中的concat是通过javascript完成的。
所以换一下整个className来构建字符串:
<div className={"data-wrapper plan-" + plan.flag} key={i}>
你应该好好去。
答案 1 :(得分:1)
Template Strings将是最佳解决方案。
<div className={`data-wrapper plan-${plan.flag}`} key={i}>
答案 2 :(得分:0)
除了Brad的回答之外:React的JSX就像一个模板语言,这意味着你在return语句中写的那些<div></div>
将逐字地添加到html页面。然后,当您需要动态部分时,可以使用{}
包含一些js表达式,其输出将插入到JSX中的html标记中。所以布拉德的解决方案顺便找到了你。
另外,
map
符合ES5标准:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map map
为您提供了一种简单而富有表现力的语法,可以将数组更改为您想要的元素,例如: var ids = users.map((user)=>{return user.id;});
。因此,如果你不期望一个新的数组,只是对每个元素做一些事情,使用for(i ...)循环(对于ES5)和对于(...)循环(对于ES6)感觉对我来说更好的做法。但肯定这只是风格/品味的问题:)