我不知道该怎么说这个。我正在学习 React,我通过 fetch 将数据加载到 React-Table 中。我尝试使用 React-Table 和自定义普通 div 和表格。
我想从 A、B、C、D ... Z 创建一个字母表的触摸按钮。这些按钮应该为按钮中的字母调用过滤器。因此,例如,按钮如下。
// In Directory.js
class FilterButtons extends React.Component {
alphaFilter(e) {
console.log(e.target.id);
// somehow filter the react table
}
render() {
return (
<div>
<button onClick={this.alphaFilter} id="A" className="letter">A</button>
<button onClick={this.alphaFilter} id="B" className="letter">B</button>
<button onClick={this.alphaFilter} id="C" className="letter">C</button>
</div>
);
}
}
const BottomMenu = props => (
<div className="btm-menu">
<div className="toprow">
<div className="filter-keys">
<FilterButtons />
</div>
</div>
</div>
);
// 我有一个类目录扩展组件,其中包含底部菜单
// 我还有一个带有 React 表的 DataGrid.js
class DataGrid extends React.Component {
constructor() {
super();
this.state = {
data: [],
};
}
componentWillMount() {
fetch('http://localhost:3000/rooms.json').then((results) => results.json()).then((data) => {
console.log(data.room);
this.setState({
data: data.room
})
})
}
render() {
const { data } = this.state;
return (
<div>
<ReactTable
data={data}
filterable
defaultFilterMethod={(filter, row) =>
String(row[filter.id]) === filter.value}
columns={[
{
Header: "Name",
accessor: "dName",
filterMethod: (filter, row) =>
row[filter.id].startsWith(filter.value)
},
{
Header: "Department",
accessor: "dDept"
},
{
Header: "Room",
accessor: "dRoom"
},
{
Header: "Map",
accessor: "dRoom",
id: "over",
}
]
}
defaultPageSize={14}
className="-striped -highlight"
/>
<br />
</div>
);
}
}
export default DataGrid;
在这一点上,我不确定该怎么做才能让 A、B、C 字母之一的按钮单击来过滤 React 表。我不想要始终使用的输入字段选项,因为我只想要按钮,因为用户没有键盘,只有触摸。
基本上,React Table 或任何可以通过单击带有传递回过滤器的字母的按钮来过滤的表。如果我使用的是 JQuery,我会使用按钮单击,然后以这种方式过滤。我仍然没有了解 React 的所有细节以及如何完成这项工作。我也想使用外部按钮进行排序,但这应该更容易,希望如此。
谢谢。抱歉,如果所有这些都没有意义,我只是想把它摆出来。同样,没有键盘,只在触摸屏上触摸,所以输入字段对我不起作用。