javascript - 为什么这个应用程序代码只能从右侧工作,否则 ReactDOM.findDOMNode querySelector 找不到 className

标签 javascript reactjs react-dom

我学习 Reactjs 和 Javascript,并对这个小文件有疑问
代码沙盒Hover effect REACT (forked) .
当鼠标移到应用程序上方时,应用程序会在带有文本的覆盖层中滑动,当鼠标离开时,覆盖层会隐藏。

为什么只有鼠标从右侧进入和退出时才经常起作用?尝试一下你会发现有点奇怪..

我看到这个错误:

enter image description here

我检查了 DOM,发现有一个正确的 className,我想这可能是我使用了一些错误版本导入的组合,或者是时间问题?

我做了一个movie clips

最佳答案

handleMouseLeave时,事件目标将是子组件,例如(p,h2,h3,...)。因此,ReactDOM.findDOMNode(e.target).querySelector无法找到像.box-content这样的外部。

我建议简单的解决方案使用useState

import React from "react";
import axios from "axios";

class App extends React.Component {
    state = {
        posts: [],
        hoverIndex: null,
    };

    componentDidMount() {
        axios
            .get(`https://jsonplaceholder.typicode.com/posts`)
            .then((res) => {
                this.setState({ posts: res.data });
            })
            .then((error) => {
                console.log(error);
            });
    }

    handleMouseEnter = (e) => {
        if (e.target.id !== null) {
            this.setState({hoverIndex: e.target.id});
        }
    };

    handleMouseLeave = (e) => {
        this.setState({hoverIndex: null});
    };

    render() {
        const { posts } = this.state;

        return (
            <div>
                {posts.map((e, index) => (
                    <div
                        onMouseEnter={this.handleMouseEnter}
                        onMouseLeave={this.handleMouseLeave}
                        className={"box-container"}
                        id={index}
                        key={e.id}
                    >
                        <h3>HOVER ME</h3>
                        <div
                            className={"box-content " + (this.state.hoverIndex === index.toString() ? 'hovered' : "")}
                        >
                            <h2>{e.title}</h2>
                            <p>{e.body}</p>
                        </div>
                    </div>
                ))}
            </div>
        );
    }
}

export default App;

关于javascript - 为什么这个应用程序代码只能从右侧工作,否则 ReactDOM.findDOMNode querySelector 找不到 className,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63873875/

相关文章:

javascript - 如何使用 React 在提交时使用 props 重定向到新组件

javascript - Flux:WAITING特定事件

jquery - reactjs - 在 react 树之外公开 react 组件方法

javascript - CSS 模块在 React 16.13.1 中不起作用

javascript - 显示前清除 Telerik radwindow 内容

javascript - 如何获取响应 header - 获取响应 header 的问题

node.js - 请求失败,状态码 400

javascript - react 合成事件在 Web 组件中不起作用

javascript - Firebase 函数返回并 promise 不退出函数

javascript - 如何将node与mysql一起用于react.js前端?