javascript - 为什么要在 mouseenter/mouseleave 中进行浸入操作?

标签 javascript reactjs

在react中编写了示例处理程序mouseenter/mouseleave,令我惊讶的是e.target返回子元素。

已创建 example在 js 上,一切都完美运行,只有在父级上。 该处理程序不必与子元素一起使用,也不会冒泡,那么为什么会发生这种情况呢?

组件代码

codepen

class MovieItem extends Component {
  constructor(props) {
    super(props);
    this.state = {
      popup: false
    };
  }

  outItem = (e) => {
    e.stopPropagation()
    console.log(e.target)

    e.target.style.opacity = 0
    // this.setState({
    //     popup: true
    // });

  };

  leaveItem = (e) => {
    e.stopPropagation()
    console.log(e.target)
    e.target.style.opacity = 1
    this.setState({
      popup: false
    });

  };


  render() {
    return ( <
      div className = "movie-item"
      id = {
        this.props.id
      }
      onMouseEnter = {
        (e) => this.outItem(e)
      }
      onMouseLeave = {
        (e) => this.leaveItem(e)
      } >

      <
      div className = "movie-item__data" >

      <
      div className = "movie-item__poster" >
      <
      img src = "http://lorempixel.com/140/205/"
      alt = "" / >
      <
      /div> <
      div className = "movie-item__title" > title < /div>

      <
      /div> <
      /div>
    );
  }

最佳答案

来自the react docs :

The onMouseEnter and onMouseLeave events propagate from the element being left to the one being entered instead of ordinary bubbling and do not have a capture phase.

关于javascript - 为什么要在 mouseenter/mouseleave 中进行浸入操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738133/

相关文章:

javascript - 将单选按钮转换为星级

javascript - 如何在类中创建元素创建方法

javascript - 如何使用动态生成的列表中的按钮更改文本?

javascript - Redux store没有有效的reducer,有combineReducers和有效的reducer

javascript - React Mapbox GL - 如何使用图层和特征而不是标记在 map 上绘制图像

javascript - React Redux 连接函数中的 Typescript 错误

JavaScript 单击事件仅在 InfoPath 表单上第一次触发

javascript var 赋值转换为目标类型

javascript - React-native:FlatList 获取滚动引用

reactjs - 使用 react-testing-library 测试 useContext()