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

React中如何在颜色选择器变化时修改元素颜色?

解决颜色选择器同步修改元素颜色的问题

你需要完成三个核心调整:添加颜色变化处理函数、给颜色输入框绑定onChange事件,同时修正目标元素的颜色设置方式(div元素没有value属性,需通过style设置颜色)。

修改后的完整代码如下:

import "./App.css";
import { useState } from "react";

function App() {
  const [color, setColor] = useState({
    color1: "#fff",
    color2: "#000" // 给第二个颜色添加默认值
  });

  // 通用颜色变化处理函数
  const handleColorChange = (e) => {
    const { name, value } = e.target;
    setColor(prevState => ({ ...prevState, [name]: value }));
  };

  return (
    <>
      <div className="box--control">
        <div className="big--leftBox">
          left box
          {/* 通过style设置元素背景色,同步选中的color1值 */}
          <div 
            className="left--innerTopBox" 
            style={{ backgroundColor: color.color1 }}
          >
            color here
          </div>
          <div className="left--innerBottomBox">code here</div>
        </div>

        <div className="big--rightBox">
          right box
          <div className="inputs">
            Color 1
            <input
              type="color"
              name="color1" // 增加name属性,匹配状态字段
              style={{ marginLeft: 10 }}
              value={color.color1}
              onChange={handleColorChange} // 绑定变化事件
            />
          </div>
          <div className="inputs">
            Color 2
            <input 
              type="color"
              name="color2"
              style={{ marginLeft: 10 }} 
              value={color.color2}
              onChange={handleColorChange}
            />
          </div>
        </div>
      </div>
    </>
  );
}
export default App;

关键修改说明:

  • 新增handleColorChange函数:通过解构获取输入框的name和value,用函数式更新状态,确保状态修改的准确性,同时支持多个颜色输入框复用。
  • 给颜色输入框添加name属性与onChange绑定:让输入框的变化能触发状态更新,name属性对应state中的字段,实现精准修改。
  • 修正left--innerTopBox的颜色设置:使用style.backgroundColor将选中的颜色设为元素背景色,若需要修改文字颜色,替换为color: color.color1即可。
  • 给color2添加默认状态值,避免未定义的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:28