当前位置: 首页 > 知识库问答 >
问题:

hover在MouseEnter和MouseEnter上不起作用React。超出了最大调用堆栈大小

谷梁向荣
2023-03-14

新反应。当光标悬停在使用React的按钮上时,我试图实现按钮的颜色更改。当我在本地运行应用程序时,悬停似乎没有任何效果。有时我在加载应用程序时也会收到“Maximum call stack size exceeded”致命错误。我相信我已经正确设置了代码,但显然,情况并非如此。任何帮助都将不胜感激!

export class Header extends React.Component {
    constructor(props) {
    super(props)
    this.state = {
        hover: false
    }
}

    handleHover() {

    this.setState({
        hover: !this.state.hover
    })
}

   render(){

   var buttonStyle = {

        borderRadius: '5px',
        borderColor: 'red',
        marginTop: 25,

    }


   if(this.state.hover){

        buttonStyle = {
            backgroundColor: 'green',
            color: 'yellow'
        }
    }
    else{

        buttonStyle = {
            backgroundColor: 'blue',
            color: 'orange'
        }

    }


 }

 return(
     <button style={buttonStyle} onMouseEnter={this.handleHover()} onMouseLeave={this.handleHover()} type="button" className="btn btn-outline">Learn More</button>
  )
}

共有1个答案

程景胜
2023-03-14

你需要做两个改变。首先在按钮元素中,需要像这样传递hove处理程序函数(不带括号)

<button style={buttonStyle} onMouseEnter={this.handleHover} onMouseLeave={this.handleHover} type="button" className="btn btn-outline">Learn More</button>

您需要像这样将悬停处理程序函数绑定到构造函数中的类

constructor(props) {
    super(props)
    this.state = {
        hover: false
    }
    this.handleHover = this.handleHover.bind(this)
}
 类似资料:
  • 我正在使用我岳父让我建立的一个网站作为学习React的借口。我不是一个天生的JavaScript开发人员(更喜欢后端),我知道我下面的代码中可能有一些递归元素,但我就是看不到。谁能告诉我我做错了什么?

  • 如果用户未登录,我尝试将用户重定向到“TrapPage”。 这是我的代码: 当我将函数requireAuth放在onEnter上时,控制台给我一个错误: 我是一个反应迟钝的人,请耐心点:) 我的代码有什么问题?

  • //{this.props.params.item}来自反应路由器(路径('/detail/item/id')) 为什么我的调度是无限循环,直到出错(超过最大调用堆栈大小)

  • 这是我在React中的第一个应用程序。在localhost中,一切正常,当我使用Github Pages部署时,我的应用程序(Info/Images/evenements)中的一些页面无法呈现。每次单击他们的链接访问他们时,我都会在控制台上看到一个白色页面和此错误: range error:object . tostring处超出了最大调用堆栈大小 同样,当我刷新页面时,github pages返

  • 当我添加<代码>时 我得到错误 超过了最大调用堆栈大小 当然,如果我注释掉

  • 当我为图表(react-chartjs-2)获取数据时,我收到了这个错误。我实现了try/catch块,但不知道如何删除这个错误。在Edge浏览器上,我得到了CRIPT28:SCRIPT28:堆栈空间不足 这是我在组件中调用的操作。 这是连接到redux存储的组件。它在我看来一切都很好。