所以基本上我正在使用一个大型数据集,它为您提供今年(2018 年,因此数据是从 2018 年 1 月 1 日到 2018 年 2 月 18 日)每天的视频列表(大约 100-200 个)。我想做的是使用一张表格来显示一天内的所有视频。我正在使用<option>
标签作为所有日期的列表。我目前被卡住了,因为我试图让它在您单击某个日期的位置,一个表格将生成并显示当天的视频列表,其中包含视频名称和发布视频的频道。这是我的代码的副本:
下面的代码是生成表格中的每一行:
// Simple TableRow component for showing a <tr>
class TableRow extends Component {
render() {
return (
<tr>
<td>
{ this.props.date }
</td>
<td>
{ this.props.title }
</td>
<td>
{ this.props.channel }
</td>
<td>
{ this.props.view }
</td>
<td>
<img src={ this.props.photo }></img>
</td>
</tr>
)
}
}
下面的代码是生成整个表并调用TableRow
// Class for a table
class Table extends Component {
constructor(props) {
super(props);
}
// Should return a TableRow component for each element in this.props.data
render() {
return (
<div>
<table className="table">
<tbody>
<tr>
<th>Date</th>
<th>Video Name</th>
<th>Channel</th>
<th>Views</th>
<th>Photo</th>
</tr>
{ this.props.songs.map(function(d, i) {
return <TableRow key={ 'song-' + i } date={ d.trending_date } title={ d.title } channel={ d.channel_title } view={d.views} photo={ d.thumbnail_link } />
}) }
</tbody>
</table>
</div>
)
}
}
最后,这是我做大部分工作的地方。此功能正在生成选项并根据特定日期创建表格。this.props.data
是从不同类传递到Options
类的数据集
class Options extends Component {
constructor(props) {
super(props);
this.state = {
value: '18.01.01',
data: [],
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({
value: event.target.value,
});
}
render() {
// Gets the trending dates but ignores duplicates
let dateData = d3.nest()
.key((d) => { return d.trending_date })
.entries(this.props.data);
return (
<div>
Choose a Date:
<select value={this.state.value} onChange={this.handleChange}>
{ dateData.map((d) => {
return <option value={d.key}>{d.key}</option>
}) }
</select>
<Table songs={this.state.data} />
</div>
);
}
}
我正在尝试使用this.state.value
VALUE 来获取对象中的 VALUE dateData
,因为dateData
它包含每个日期的所有视频。但是,我似乎无法找到一种方法来设置this.state.data
正确的数据集以传递给Table
班级......有人知道如何解决这个问题吗?
数据集外观示例:https ://i.imgur.com/S5JIkbx.png