如何动态构建表
How to build a table dynamically
我试图用reactJS动态构建一个表,但有两个问题我无法解决:
- 在GridList组件中,我得到了这一行
<GridRow data={data1} key={i} />
,我真的不想获取"全局"var,而是使用发送到方法中的数据?我该怎么做 - 在GridRow中,我也需要循环列(就像我现在所做的那样),但我需要获得正确的单元格值,不,我只得到了这个异常:
Error while rendering "GridBox" to "react1": Unable to get property 'data' of undefined or null reference
代码
var data1 = {"Columns":[{"Title":"Title1","HTMLClass":"g1_Title"},{"Title":"Title2","HTMLClass":"g2_Title"},{"Title":"Title3","HTMLClass":"g3_Title"}],"Rows":[{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]},{"Cells":["Cell0","Cell1","Cell2"]}]};
var GridRow = React.createClass({
render: function() {
if(this.props.data){
var Cell = this.props.data.Columns.map(function (column, i) {
return (
<div className={column.HTMLClass}>{this.props.data.Cells[i]}</div>
);
})
}
return (
<li>{Cell}</li>
);
}
});
var GridHead = React.createClass({
render: function() {
if(this.props.data){
var Cell = this.props.data.Title;
var HtmlClass = this.props.data.HTMLClass;
}
return (
<div className={HtmlClass}>{Cell}</div>
);
}
});
var GridList = React.createClass({
render: function() {
if(this.props.data){
var Header = this.props.data.Columns.map(function (columns) {
return (
<GridHead data={columns} />
);
});
var Row = this.props.data.Rows.map(function (data, i) {
return (
<GridRow data={data1} key={i} />
);
});
}
return (
<ul>
<li>{Header}</li>
{Row}
</ul>
);
}
});
var GridBox = React.createClass({
render: function(){
return (
<GridList data={data1} />
);
}
});
您只能引用传递到映射中函数中的内容,除非您使用bind,它维护this
的实例,以便它在组件和映射中使用的函数中是相同的。这将允许您在映射函数中使用this.props
。
由于header
使用的是直接传递到map
中函数中的内容,因此不一定需要绑定。在row
中,为了访问this.props
,必须绑定函数。例如,如果您有想要在this.props
:中访问的somedata
var header = this.props.data.Columns.map(function (columns) {
return (
<GridHead data={columns} />
);
});
var Row = this.props.data.Rows.map(function (data, i) {
return (
<GridRow data={this.props.somedata} key={i} />
);
}.bind(this));
请注意,在JSX中,常规变量名称应该以小写字母开头(如上面的标题所示),而组件名称应该以大写字母开头。
相关文章:
- 有没有一种方法可以基于Angular 2中注册的路线构建动态导航/菜单
- 如何使用CSS和JavaScript构建动态菜单
- 使用jquery解析json以构建动态填充的select
- 在 AngularJS 配置中构建动态模板 URL
- 在 JavaScript 中构建动态表
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- JavaScript 框架,用于构建动态但服务器端驱动的前端
- 如何在 Flask 中构建动态 JavaScript 创建
- 使用 get_categories() 构建动态类别树
- 从 JSON 构建动态表
- 是否可以在Javascript中构建动态自定义对象
- 如何构建动态html表单远程CSV
- 如何使用javascript构建动态函数
- 用javascript构建动态下拉列表
- Javascript构建动态字符串
- 使用javascript/ajax构建动态数组
- Bootstrap Modal:构建动态内容
- jQuery或angularjs插件来构建动态报告
- 使用jquery构建动态html,或者它一定比这更容易
- 用Javascript构建动态链接