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

React中点击单个Div切换背景颜色问题求助

解决单个Div独立切换背景颜色的问题

你的问题出在用单个isActive状态变量控制所有Div,所有Div都依赖这个全局变量判断颜色,所以点击任意一个都会同步改变所有Div的状态。要实现单个Div独立切换,需要给每个元素维护独立的激活状态,以下是修改后的代码:

import React, { useState } from 'react'

export default function ChangeColor() {
  const [colorState, changeState] = useState(['red', 'green', 'blue']);
  // 用数组记录每个Div的激活状态,初始都为true(显示原颜色)
  const [activeStates, setActiveStates] = useState(colorState.map(() => true));

  const handleClick = (index) => {
    // 复制当前状态数组,避免直接修改原数组
    const newActiveStates = [...activeStates];
    // 切换对应索引的激活状态
    newActiveStates[index] = !newActiveStates[index];
    setActiveStates(newActiveStates);
  }

  return (
    <>
      {colorState.map((color, index) => {      
        return (
          <div 
            key={index}
            style={{
              width: '100px',
              height: '100px',
              backgroundColor: activeStates[index] ? color : 'yellow',
              margin: '10px' // 增加间距方便区分每个Div
            }} 
            onClick={() => handleClick(index)}
          >
            <p>{color}</p>
          </div>
        )
      })}
    </>
  )
}

关键改动说明:

  • 将单个isActive变量替换为数组activeStates,数组中每个元素对应一个Div的激活状态,初始值全为true(对应显示原颜色)。
  • 新增handleClick函数,接收点击Div的索引,通过复制状态数组并切换对应索引的状态值,实现只更新当前点击Div的状态。
  • 每个Div的背景色判断改为依赖activeStates[index],点击时传入当前索引,确保只有被点击的Div切换颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:10:31