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

图像有条件渲染时React中的图像闪烁问题

施飞昂
2023-03-14

我有一个标题,我想显示一个图像在它的右边,当鼠标在标题上。

>

  • 我正在将变量editMode的状态设置为true/false

    然后我使用onMouseOver和onMouse事件有条件地呈现图像。

    现在,当我悬停在标题上时,编辑模式设置为true,图像显示出来,当我将光标移出标题时,editMode设置为false,图像消失。

    我正在维护一个变量editMode的状态,该状态被设置为true/false,并且使用onMouseOver和onmouse来呈现图像:

    问题:当我悬停在编辑图标上时,它开始闪烁。

    class TempComponent extends React.Component {
    constructor() {
        super()
        this.editModeToggler = this.editModeToggler.bind(this)
        this.state = {
            editMode: false
        }
    }
    
    editModeToggler() {
        console.log('called')
        this.setState({editMode: !this.state.editMode})
    }
    
    render() {
      return(
        <div>
          <h3
            onMouseOut={this.editModeToggler} 
            onMouseOver={this.editModeToggler}
          >
            Title
          </h3>
          {this.state.editMode?
                <img src='http://www.rebanet.it/images/banners/iscrizioni.png' />
            :
            null
          }
        </div>
      )
     }
    }
    

    您可以在下面找到运行的代码:http://jsfidle.net/lu4w4v1c/2/

    我怎么才能阻止这种闪烁。我也尝试过使用onMouseEnter和onMouseLeave,但是没有效果。我不知道是怎么回事,但使用这两个事件的结果与我想要的相反。第一次加载组件时,一切都很好,但当我将鼠标悬停在图标上时,整个动态都发生了变化。当鼠标不在页眉上方时,图标会显示出来,当鼠标在页眉上方时,图标不会显示出来。请帮忙

    包含onMouseEnter和onMouseLeave的代码在这里:http://jsfidle.net/lu4w4v1c/3/

  • 共有2个答案

    堵泽宇
    2023-03-14

    如果您有一个容器要执行onmouseover事件以在内部呈现div,那么您应该使用onmouseLeave。示例fiddles也有onmouseleave。

    https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_event_mouseLeave_mouseout

    这就说明了问题所在

    逄俊力
    2023-03-14

    当您在h3上有侦听器时,最初图像不会呈现,所以第一次看起来一切都很好,但是一旦图像呈现并且您悬停在图像上,它就会响应标题的鼠标移出事件并立即隐藏图像,这反过来又触发h3上的鼠标移出,导致闪烁行为。

    为了解决问题,您可以简单地在容器上附加侦听器。更新了您的小提琴http://jsfidle.net/lu4w4v1c/4/

    <div  onMouseOut={this.editModeToggler} 
        onMouseOver={this.editModeToggler}>
      <h3>
        Title
      </h3>
      {this.state.editMode?
            <img src='http://www.rebanet.it/images/banners/iscrizioni.png' />
        :
        null
      }
    </div>
    
     类似资料:
    • 问题内容: 我正在为我的第一个深度Pyglet项目开发2D Minecraft克隆,但遇到了一个问题。每当我在屏幕上有相当数量的块时,帧速率都会急剧下降。 这是我的渲染方法:我使用字典,键为元组(代表块的坐标),项为纹理。 我遍历整个字典并渲染每个块: PS sx和sy是屏幕滚动的坐标偏移 我想知道是否有一种方法可以更有效地渲染每个块。 问题答案: 我将尽力解释为什么以及如何在不真正了解代码外观的

    • 基本图像渲染 外部资源渲染 摄像机 材质系统 材质资源 Effect 渲染组件参考 Sprite 组件参考 Label 组件参考 LabelOutline 组件参考 LabelShadow 组件参考 Mask 组件参考 MotionStreak 组件参考 ParticleSystem 组件参考 TiledMap 组件参考 TiledTile 组件参考 Spine 组件参考 DragonBones

    • 我最近一直在练习Java的swing特性,在我的一个扩展JPanel类的类中,我重写了方法,以便它将我的BufferedImage绘制到JPanel上。我也有一个方法在上面移动。在这个问题之前,我有一个问题,显示了移动的过程,因为它重新油漆太快。因此,我创建了一个名为的布尔变量,当图像仍在移动过程中时,该变量被设置为false。但是,现在我看到屏幕把整个图像拿走并放回原处,导致它眨眼。下面是我的基

    • 问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从

    • 问题内容: 有没有一种方法可以将html渲染为PNG图片?我知道画布是可能的,但我想呈现例如div之类的标准html元素。 问题答案: 我知道这是一个很老的问题,已经有了很多答案,但是我仍然花了几个小时来尝试做自己想做的事情: 给定一个html文件,从命令行生成具有 透明 背景的(png)图像 使用无头的Chrome(此响应的版本为74.0.3729.157),实际上很容易: 命令说明: 您可以从

    • 包括以下渲染组件: Sprite 组件参考 Label 组件参考 Mask 组件参考