私が作成してい動的<thead>
<table>
の中に挿入された列ヘッダーの一連有するReact 0.14.6
と<table>
:Reactに動的ヘッダーを含むテーブルにhtmlテーブルのセルデータを動的に挿入するにはどうすればよいですか?
CourseTable.js
:
import CourseList from './CourseList';
import GradesHeader from './GradesHeader';
import React, {Component} from 'react';
export default class CourseTable extends Component {
/**
* Gets all unique terms that have grades
* @param courses {Array}
* @return {Array}
*/
getUniqueTerms(courses) {
let uniqueTerms = [];
courses.forEach(course => {
if (course.grades) {
Object.keys(course.grades).forEach(term => {
if (uniqueTerms.indexOf(term) === -1) {
uniqueTerms.push(term);
}
})
}
});
return uniqueTerms;
}
createGradesHeaders(courses) {
return this.getUniqueTerms(courses).map(term => {
return (
<th>
<GradesHeader headerText={term}/>
</th>
);
});
}
render() {
let headers = this.createGradesHeaders(this.props.courses);
return (
<table className="table table-bordered table-condensed">
<thead>
<tr>
<th>
Period
</th>
<th>
Class
</th>
<th>
Term
</th>
<th>
Date Enrolled
</th>
<th>
Date Left
</th>
<th>
<div>Absenses</div>
<div>All (Excused)</div>
</th>
<th>
Tardies
</th>
<th></th>
{headers}
<th>
Teacher
</th>
</tr>
</thead>
<CourseList courseData={this.props.courses}/>
</table>
);
}
}
GradesHeader.js
:
import React, {Component} from 'react';
export default class GradesHeader extends Component {
render() {
return (
<div>
{this.props.headerText}
</div>
);
}
}
をCourse.js
:
import React, {Component} from 'react';
export default class Course extends Component {
render() {
const unexcused = !!this.props.courseData.attendance.unexcused ? this.props.courseData.attendance.unexcused : 0;
const excused = !!this.props.courseData.attendance.excused ? this.props.courseData.attendance.excused : 0;
const totalAbsences = unexcused + excused;
return (
<tr>
<td>
{this.props.courseData.expression}
</td>
<td>
{this.props.courseData.course_name}
</td>
<td>
{this.props.courseData.abbreviation}
</td>
<td>
{this.props.courseData.dateenrolled}
</td>
<td>
{this.props.courseData.dateleft}
</td>
<td>
{totalAbsences}
({excused})
</td>
// Grades for this course go here
<td>
</td>
<td>
{this.props.courseData.lastfirst}
</td>
</tr>
);
}
}
CourseTable.js
には、テーブルの<thead>
のこのセクションのヘッダーが動的に生成されています。私はどのように各グレードのデータを対応する列に挿入/挿入するのか混乱しています。
動的に生成される<th>
ヘッダー要素のそれぞれを何とか識別する必要があると思います。これらの列に挿入すると参照する方法がわかりません。
Reactは状態の変更後にレンダリングするので、新しい行を状態に追加してから、コンポーネントに渡して仮想DOMにレンダリングします。仮想DOMは、変更された内容を把握し、実際のDOMに応じて変更を加えます。 – Derek
あなたが提案しているものの例を教えてください。あなたのご意見だけでは、問題解決の解決に苦しんでいます。 –