Javascript 将鼠标悬停在react中,将永久类添加到DOM节点

Javascript 将鼠标悬停在react中,将永久类添加到DOM节点,javascript,reactjs,Javascript,Reactjs,这是jquery示例,我在15秒内编写了它 但我被困了30分钟。我已经试过了,但是这个班不会留下来 构造函数(道具){ 超级(道具) 此.state={ 活动:空 } } onMouseEnter(项目){ this.setState({active:item}) } render(){ 常数项=[1,2,3,4,5]; 返回( {items.map((obj,i)=> {obj} )} ); } 真的需要帮助,伙计们 问题是,您试图将一个状态设置为多个项目,而此时只有一个项目处于活动状态。

这是jquery示例,我在15秒内编写了它

但我被困了30分钟。我已经试过了,但是这个班不会留下来

构造函数(道具){
超级(道具)
此.state={
活动:空
}
}
onMouseEnter(项目){
this.setState({active:item})
}
render(){
常数项=[1,2,3,4,5];
返回(
{items.map((obj,i)=>
{obj}
)}
);
}

真的需要帮助,伙计们

问题是,您试图将一个状态设置为多个项目,而此时只有一个项目处于活动状态。您需要以某种方式跟踪状态的变化,我提出了一个简单的解决方案,为每个项目提供单独的状态

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在这里:

问题在于,您试图将一个状态设置为多个项目,而同时只有一个项目处于活动状态。您需要以某种方式跟踪状态的变化,我提出了一个简单的解决方案,为每个项目提供单独的状态

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在这里:

如果你不能控制物品的数量,那么你可以尝试以下方法

onMouseEnter(event){
    event.target.style.backgroundColor = 'yellow';
}

render(){
    const items = [1,2,3,4,5];
    return (
        <div>
            {items.map((obj,i) =>  
                <div 
                    key={i}
                    onMouseEnter={this.onMouseEnter}>
                {obj}
                </div>
             )}
        </div>
    );
}
onmouseinter(事件){
event.target.style.backgroundColor='黄色';
}
render(){
常数项=[1,2,3,4,5];
返回(
{items.map((obj,i)=>
{obj}
)}
);
}

这里是指向工作小提琴的链接:

如果您无法控制项目数量,则可以尝试以下方法

onMouseEnter(event){
    event.target.style.backgroundColor = 'yellow';
}

render(){
    const items = [1,2,3,4,5];
    return (
        <div>
            {items.map((obj,i) =>  
                <div 
                    key={i}
                    onMouseEnter={this.onMouseEnter}>
                {obj}
                </div>
             )}
        </div>
    );
}
onmouseinter(事件){
event.target.style.backgroundColor='黄色';
}
render(){
常数项=[1,2,3,4,5];
返回(
{items.map((obj,i)=>
{obj}
)}
);
}

这是指向工作小提琴的链接:

如果您无法控制物品的数量,该怎么办?这是有道理的,但太复杂了,无法完成小任务。@GialaJefferson我已经添加了一个答案,以防您无法控制项目的数量。你可以看看。我看不出和你以前的答案有什么不同,你能解释一下你做了什么改变吗?如果你不能控制物品的数量怎么办?这是有道理的,但太复杂了,无法完成小任务。@GialaJefferson我已经添加了一个答案,以防您无法控制项目的数量。你可以看看。我看不出和你之前的答案有什么不同,你能解释一下你做了哪些改变吗?这也很有效,但涉及到css。这也是一个很好的解决方案。是的……你是对的。它涉及CSS,但不会为这项基本任务增加任何额外的复杂性。:)一个选项是将应该选择的项目推送到鼠标处理程序中的数组中。在推送之前只需检查是否已经存在。但这有局限性,如何删除div的其他背景?@GialaJefferson您在谈论哪种方法?你能说得更具体一点吗?这同样有效,但它涉及css。这也是一个很好的解决方案。是的……你是对的。它涉及CSS,但不会为这项基本任务增加任何额外的复杂性。:)一个选项是将应该选择的项目推送到鼠标处理程序中的数组中。在推送之前只需检查是否已经存在。但这有局限性,如何删除div的其他背景?@GialaJefferson您在谈论哪种方法?你能说得更具体些吗?