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

React中鼠标悬停时setColor不生效,为何条件判断方式可行?

问题原因及解决方法

你第一种方式失效的核心问题是按钮样式的backgroundColor赋值语法错误:

在你的代码里,按钮的style属性写了:

style={{ backgroundColor: { color } }}

这里的{color}是把状态变量color包裹成了一个对象(相当于{ color: "black" }),但React的style属性要求backgroundColor的值必须是字符串类型的颜色值(比如"black"、"white"),而不是对象,所以React无法识别这个值,导致背景色不变化。

而你第二种方式里,backgroundColor: MouseOver ? "black":"white"直接返回的是字符串类型的颜色值,符合style属性的要求,所以能正常生效。

修正后的代码

把按钮的style属性改成直接引用color变量即可:

import React from "react";

function App() {
  const [headingText, setHeadingText] = React.useState("Hello");
  const [color, setColor] = React.useState("white");
  function mouseOver() {
    setColor("black");
    setHeadingText("Yo");
  }
  function mouseOut() {
    setColor("white");
    setHeadingText("Bye");
  }
  return (
    <div className="container">
      <h1>{headingText}</h1>
      <input type="text" placeholder="What's your name?" />
      <button
        style={{ backgroundColor: color }} {/* 去掉多余的大括号 */}
        onMouseOver={mouseOver}
        onMouseOut={mouseOut}
      >
        Submit
      </button>
    </div>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:37:09