单击元素时如何更改元素的背景颜色?

桑托什

我在ReactJS项目中有一个div元素列表。我只想在有人单击时指示更改背景颜色。

以下是基本代码。


function changetoselected(event){
    // now change backgroundColor of
    // event.currentTarget to white
}

<div>
bigarrayofsize100plus.map((item,index) =>{
    return(
         <div 
            className="p-2" 
            onClick={(e) => changetoselected(e)} 
            style={{backgroundColor:"green"}}
         >
            .....
         </div>
    )
}
</div>

我不想在状态中不必要地存储所有要素。我不必在这里跟踪单击的项目。

如果单击一次,我只想更改颜色。我该怎么做

财富

使用style属性设置这样的backgroundColor。

function changetoSelected(event){
    event.target.style.backgroundColor = '#fff'
}

您也可以像这样在React中使用Refs

对于功能组件,请执行`

import { useRef } from 'react';

function MyComponent() {
  const divEl = useRef(null);

  const changeToSelected = () => {
    divEl.current.style.backgroundColor = '#fff';
  };

  return (
      <div ref={divEl} onClick={changeToSelected}>
        ...
      </div>
  );
}

对于类组件,请执行此操作

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.divElement = React.createRef();
  }
  
  changetoselected = () => {
    this.divElement.current.style.backgroundColor = '#fff';
  }

  render() {
    return <div ref={this.divElement} onClick={this.changetoselected}>
        ...
      </div>;
  }
}

毕竟,使用纯dom(通过ref或event)可能不是您要搜索的内容,您可以考虑使用react state并将className或style应用于dom元素

import { useState } from 'react';

const MyComponent = () => {
  const [backgroundColor, setBackgroundColor] = useState('green');

  return (
      <div 
        onClick={() => setBackgroundColor('white')} 
        style={{ backgroundColor }}
      >
        ...
      </div>
  );
}

编辑

function MyComponent() {
  const divEl = useRef(null);

  const changeToSelected = () => {
    divEl.current.style.backgroundColor = '#fff';
  };

  return (
      <div>
         {bigarrayofsize100plus.map((item,index) =>
           <ChildComp
             key={index}
             item={item}
           >
              .....
           </div>
          )}
      </div>
  );
}
function ChildComp({ item }) {
  const divEl = useRef(null);

  const changeToSelected = () => {
    divEl.current.style.backgroundColor = '#fff';
  };

  return (
      <div
        ref={divEl}
        onClick={changeToSelected}
        className="p-2" 
        style={{backgroundColor:"green"}}
      >
        // do stuff with item heere
      </div>
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击元素时如何更改元素的背景颜色?

来自分类Dev

单击更改元素背景颜色

来自分类Dev

单击时更改元素的颜色

来自分类Dev

悬停CSS时更改元素的背景颜色

来自分类Dev

每次滚动时如何更改元素颜色

来自分类Dev

如何在鼠标单击时更改元素文本

来自分类Dev

单击模式中的图标时如何更改元素的样式?

来自分类Dev

如何使用UIBezierPath更改元素的颜色?

来自分类Dev

如何通过jQuery更改元素的颜色?

来自分类Dev

Javascript,使用if语句更改元素的单击颜色

来自分类Dev

使用window.location.hash更改元素的背景颜色

来自分类Dev

单击时如何更改没有 id/class 的特定“td”元素的背景颜色?

来自分类Dev

点击更改元素颜色

来自分类Dev

根据元素的内容更改元素的颜色

来自分类Dev

在元素之前更改元素的颜色

来自分类Dev

鼠标单击图像时更改元素

来自分类Dev

更改元素的背景图像以匹配单击的元素的背景图像

来自分类Dev

烧瓶发出休息请求时,如何更改元素的颜色(在html页中)?

来自分类Dev

如何使用angular.js更改元素的颜色

来自分类Dev

如何使用DOM更改元素的href颜色?

来自分类Dev

Css 通过单击另一个元素来更改元素的颜色

来自分类Dev

如何更改元素的值

来自分类Dev

如何动态更改元素?

来自分类Dev

从colors.xml更改元素的颜色

来自分类Dev

在GridView中更改元素OnItemClick的颜色

来自分类Dev

在悬停AngularJS上更改元素颜色

来自分类Dev

使用JavaScript更改元素onMouseOver的颜色

来自分类Dev

在悬停AngularJS上更改元素颜色

来自分类Dev

更改元素数量颜色