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

如何实现点击选中div变红其余为灰色?React动态渲染Slick滑块dot样式切换问题

实现方案

核心思路

通过React状态存储当前激活项的索引,渲染时根据索引匹配结果动态绑定类名即可。

具体步骤

  • 第一步:声明状态存储激活项索引,初始值可根据需求设置(设0则默认选中第一项,设-1则默认无选中项)
import { useState } from 'react'

// 组件内声明状态
const [activeIndex, setActiveIndex] = useState(0)
  • 第二步:修改列表渲染逻辑,点击时更新激活索引,同时动态绑定类名
Array.from({length: data.length}).map((item, index) => (
  <div 
    className={`dot ${index === activeIndex ? 'active' : ''}`}
    onClick={() => {
      setActiveIndex(index)
      sliderRef.current.slickGoTo(index)
    }}
    key={index}
  ></div>
))

注意需要给循环渲染的元素加唯一key属性,避免React告警,这里如果data里有唯一id优先用id做key,没有可以暂时用index代替。

样式说明

你预先定义的.dot灰色样式和.active红色样式不需要修改,只要保证.active样式优先级高于.dot,能覆盖颜色设置即可,参考示例:

.dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ccc; /* 灰色 */
  cursor: pointer;
}
.active {
  background: #f00; /* 红色 */
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:54:04