React-Bootstrap分页组件Active状态条件判断失效问题求助
你好,我来帮你排查一下这个分页组件active状态不生效的问题~
首先看你遇到的情况:哪怕把active设为false,所有分页项都显示active状态,这大概率是两种情况导致的:
1. 类型不匹配导致条件判断失效
你注释掉的active={x+1===page}里,page变量的类型可能和x+1不一致——比如page是字符串类型(比如从URL参数、接口返回拿到的),而x+1是数字类型,这时候===严格相等判断会返回false,但如果你的代码里没正确处理,反而可能因为某些逻辑(或者样式问题)让所有项都显示active。
解决办法:先统一两者的类型,比如把page转成数字:
<Pagination.Item active={x + 1 === Number(page)} > {x+1} </Pagination.Item>
如果page本身就是数字类型,那确认循环中的x是从0开始的索引(这样x+1刚好对应页码,逻辑是对的)。
2. 自定义样式/全局样式覆盖了组件默认状态
有时候我们自己写的CSS可能不小心给所有.page-item或.page-link加了active的样式(比如强制设置背景色、边框样式),这时候哪怕组件的active属性是false,视觉上还是会显示active的样子。
你可以打开浏览器开发者工具,检查分页项的元素,看看是不是有自定义的CSS类覆盖了react-bootstrap的默认active样式,如果有的话,调整样式的优先级或者修改选择器。
额外的排查小技巧
你可以先写一个固定条件测试,比如active={x+1 === 2},看看第2个分页项是否能正确显示active,其他项不显示。如果这个能生效,说明问题出在page变量的取值或者类型上;如果还是所有项都active,那肯定是样式或者组件使用方式的问题。
另外,确认你的react-bootstrap版本是最新的稳定版本,有些旧版本可能存在组件属性处理的bug,更新后可能就能解决问题。
备注:内容来源于stack exchange,提问作者Surabhi Verma

