javascript - 带有语义 UI 反应表的表分页
问题描述
我有一个<Table>
组件semantic-ui-react
,用于渲染从模拟 api 调用中获取的数据。我可能有X
很多行,所以我正在考虑添加分页。我找到了一些解决方案,但它们看起来太笨重了。
任何人都可以就如何处理简单的分页提出一些建议吗?假设我只想在每页上呈现 5 行数据。我怎样才能做到这一点?
我这里有一个密码箱。
class PaginationExample extends Component {
constructor(props) {
super(props);
this.state = { tableData: [], activePage: 1 };
}
async componentDidMount() {
await this.getData();
}
getData = async () => {
const { data } = await axios.get("/slotInfo");
console.log(data);
const tableData = data.data.slotInfo;
this.setState({ tableData: tableData });
};
//change handlers for pagination
handlePageClick = (e, { name }) => this.setState({ activePage: name });
render() {
const { tableData, activePage } = this.state;
return (
<div className="App">
<h1>Table Pagination w/ SUI-React Component</h1>
<Table style={{ marginTop: "5em" }} inverted celled>
<Table.Header fullWidth>
<Table.Row>
<Table.HeaderCell>Slot Id</Table.HeaderCell>
<Table.HeaderCell>deviceId</Table.HeaderCell>
<Table.HeaderCell>Initialized</Table.HeaderCell>
<Table.HeaderCell>Label</Table.HeaderCell>
</Table.Row>
</Table.Header>
<Table.Body>
{Object.values(tableData).map(
({ slotId, deviceId, initialized, label }) => {
return (
<Table.Row>
<Table.Cell>{slotId}</Table.Cell>
<Table.Cell>{deviceId}</Table.Cell>
<Table.Cell>{initialized}</Table.Cell>
<Table.Cell>{label}</Table.Cell>
</Table.Row>
);
}
)}
</Table.Body>
<Table.Footer>
<Table.Row>
<Table.HeaderCell colSpan="4">
<Menu floated="right" pagination>
<Menu.Item as="a" icon>
<Icon name="chevron left" />
</Menu.Item>
<Menu.Item
name="1"
active={activePage === "1"}
onClick={this.handlePageClick}
/>
<Menu.Item
name="2"
active={activePage === "2"}
onClick={this.handlePageClick}
/>
<Menu.Item
name="3"
active={activePage === "3"}
onClick={this.handlePageClick}
/>
<Menu.Item
name="4"
active={activePage === "4"}
onClick={this.handlePageClick}
/>
<Menu.Item as="a" icon>
<Icon name="chevron right" />
</Menu.Item>
</Menu>
</Table.HeaderCell>
</Table.Row>
</Table.Footer>
</Table>
</div>
);
}
}
解决方案
使用 Semantic UI 中的分页组件怎么样? https://react.semantic-ui.com/addons/pagination/
基本上你只需要提供 props totalPages
,activePage
/defaultActivePage
和onPageChange
你将用于你的页面更改功能。
推荐阅读
- css - 如果 Shopify 产品页面中出现换行符,如何缩小字体大小?
- r - 从栅格中提取一些值作为矩阵,进行转换并将转换后的值放到其原始位置
- java - 静态日历变量上的 sonarqube 错误
- javascript - 我正在尝试制作一个简单的计算器并且在执行第二次操作时遇到问题
- azure - CosmosDb 缓慢的 changefeed 性能和高分区键基数
- postgresql - 如何确保两列的组合始终是唯一的?
- android - Kotlin:如何通过按任意三个按钮取消正在进行的计时器,然后重新启动计时器?
- python - Python 运行旧函数
- python - 从初始值创建 DF 列
- javascript - 为什么我的 promisify 和 jwt 不返回值或错误?