reactjs - 如何用来自两个不同数组的数据表示一个复选框?
问题描述
我正在尝试使用来自两个数组的数据呈现一些复选框,这些数组是一个数组中的 id 和 name 以及另一个数组中的计数/长度。前任:
const count = [[{"1":"91"}],[{"1":"1"}],[{"1":"0"}]]
const type = [{id: "1", name: "iPhone"}, {id: "2",name: "Samsung"}, {id: "3",name: "Huawei"}]
我试图在另一个地图函数中使用地图函数。
var text=type.map(function(itm,i){
return [<label key={itm.id}><input type="checkbox" key={itm.id} value={itm.id} name="search"/>{itm.name}</label>, (count && count.length > 0 && count.map( item =>
item.length > 0 && item.map( el =>
Object.keys(el).length > 0 &&
Object.keys(el).map(val => <p>{el[val]}</p>)
)
)[i])];
}).join(' ');
这是应该如何表示的。[] 是复选框。
[] Iphone (91)
[] samsung (1)
[] huawei (0)
解决方案
您可以遍历计数数组并添加一个新属性到类型数组,该数组基于 id 保存计数数组中的项目总数。
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.0/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
<div id="root"></div>
<script type="text/babel">
const count = [[{ "1": "91" }], [{ "1": "1" }], [{ "1": "0" }]]
let type = [{ id: "1", name: "iPhone" }, { id: "2", name: "Samsung" }, { id: "3", name: "Huawei" }]
for (let i = 0; i < count.length; i++) {
Object.keys(count[i][0]).forEach(key => {
const index = type.findIndex(x => x.id === key);
const total = parseInt(count[i][0][key], 10);
type[index].total ? type[index].total += total : type[index].total = total;
})
}
class App extends React.Component {
constructor() {
super();
this.state = {
name: 'React'
};
}
render() {
const check = type.map(item => {
return (
<div>
<input type="checkbox" id="check3"/> {`${item.name} (${item.total ? item.total : 0})`}
</div>
)
})
return (
<div>
{check}
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
</script>
推荐阅读
- amazon-web-services - 如何从 Redshift 中的字符串中删除空格?
- python - 定义 SQLAlchemy M:N 关系中的 AttributeError
- .net - Microsoft .NET 版本中的 LTS 和 GA 有什么区别?
- html - 如何让 GitHub 的 Jekyll 与 index.html 一起工作?
- mongodb - 如何在颤动中从未来实例中打印正确的值
- scala - Spark UDF 重载
- vb.net - 如何从 Visual Basic 的列表框中获取用户输入?
- java - 如何在 Springboot 中创建可执行的 WAR 或 JAR
- vuejs2 - Vue Element UI 动态改变 el-select 颜色
- sparql - BUG - SPARQL 描述查询在 Anzograph 中不返回任何内容