You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React分页组件中如何设置Active类

解决分页页码Active类的设置问题

嘿,这个问题其实很容易搞定,核心就是靠React的状态来跟踪当前选中的页码,然后动态给对应的<li>元素加上active类。我给你一步步拆解:

1. 给组件添加跟踪当前页码的状态

首先,你需要在组件的构造函数里初始化一个状态,用来保存当前选中的页码,比如默认选中第一页:

constructor(props) {
  super(props);
  this.state = {
    currentPage: 1 // 默认选中第一页
  };
  // 记得绑定handlePages方法,避免this指向问题
  this.handlePages = this.handlePages.bind(this);
}

2. 修改点击事件,更新当前页码状态

接下来调整handlePages方法,让它在点击页码时更新currentPage的状态。直接把页码作为参数传进去会比通过id获取更直观:

handlePages(pageNumber) {
  this.setState({
    currentPage: pageNumber
  });
  // 这里可以保留你原来的分页逻辑,比如更新列表数据之类的操作
}

对应的渲染部分,把onClick改成传参形式:

onClick={() => this.handlePages(number)}

3. 动态设置className,添加Active类

最后是关键一步:渲染每个页码<li>时,判断当前页码是否等于currentPage,相等就加上active类,否则只保留controls类。用模板字符串拼接最便捷:

const renderPagination = numbers.map(number => {
  return (
    <li 
      className={`controls ${number === this.state.currentPage ? 'active' : ''}`}
      key={number}
      onClick={() => this.handlePages(number)}
    >
      {number}
    </li>
  );
});

这样一来,每当你点击不同页码,currentPage状态更新后组件会重新渲染,对应的页码自动加上active类,其他页码则移除该类,完美实现当前页码的高亮效果。

内容的提问来源于stack exchange,提问作者Neil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:42:49