javascript - 将鼠标悬停在 React 中,将永久类添加到 DOM 节点

标签 javascript reactjs

https://fiddle.jshell.net/q8b3vwv8/

这是jquery的例子,我在15秒内写完了。

但我在 react 中卡住了 30 分钟。我已经尝试过,但类(class)不会留下来。

https://fiddle.jshell.net/8wsr7xa1

constructor(props){
        super(props)

        this.state = {
            active: null
        }
    }

  onMouseEnter(item){
    this.setState({active: item})
  }

    render(){
        const items = [1,2,3,4,5];
        return (
            <div>
                {items.map((obj,i) =>  
                    <div 
                    key={i} 
                    style={this.state.active === obj ? 
                    {backgroundColor: 'yellow'} : {}} 
                    onMouseEnter={this.onMouseEnter.bind(this, obj)}>
                    {obj}
                    </div>
                 )}
            </div>
        );
    }

真的需要帮助!

最佳答案

问题是您尝试为多个项目设置一种状态,但同时只有一个项目处于事件状态。您需要以某种方式跟踪状态更改,我制作了简单的解决方案来为每个项目提供单独的状态。

this.state = {
  active: null,
  activeItems: [false,false,false,false,false]
}

然后在 mouseEnter 上我设置状态:

onMouseEnter(item){
  this.state.activeItems[item-1]=true;
  this.setState({activeItems: this.state.activeItems});
}

最后根据状态设置颜色:

style={this.state.activeItems[i] ? 
                {backgroundColor: 'yellow'} : {}} 
                onMouseEnter={this.onMouseEnter.bind(this, obj)}>

fiddle 在这里:fiddle

关于javascript - 将鼠标悬停在 React 中,将永久类添加到 DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757681/

相关文章:

reactjs - 当架构具有嵌套对象时,在带有 ra_data_graphql_simple 的 React-admin 中超出了最大调用堆栈大小

javascript - 使用 Selenium 和 java 测试 React JS 下拉列表

javascript - window.location.reload 在 Chrome 中工作正常,但在 Firefox 中不起作用

javascript - React 与 dom 交互

javascript - React Apollo 客户端 useQuery Hook gql Uncaught TypeError :(. ..) 不是一个函数

javascript - JS正则表达式匹配两种可能的组合

javascript - 控制台返回 var 未定义,但它是

javascript - 减去日期并转换为格式 DD :HH:MM:SS Left

javascript - Flask-SocketIO 与 RabbitMQ 一起使用时未从前端接收消息

javascript - 在循环中 react onClick 事件