如何使用 refs 更改 ReactJS 中的样式类?

Posted

技术标签:

【中文标题】如何使用 refs 更改 ReactJS 中的样式类?【英文标题】:How I can use refs to change styling class in ReactJS? 【发布时间】:2017-01-28 14:20:08 【问题描述】:

我正在尝试在颜色值更改时更改 div 的背景。这是我接收颜色值的函数:

ChangeColor(oColor) 
    this.props.ChangeColor(oColor);
    console.log("Refs: ", this.refs.colorPicker.className);
  ,

这里是css类

.colorPicker 
    padding-right: 25px;
    background: #000;
    display: inline;
    margin-right: 5px;
  

这是我的 div 元素,其背景需要在运行时更新。

<div ref='colorPicker' className=this.GetClass("colorPicker")  />

我不确定 refs synatx,所以请帮助解决这个问题。谢谢。

【问题讨论】:

【参考方案1】:

我找到了。这是答案:

  ChangeColor(oColor) 
    this.props.ChangeColor(oColor);
    this.refs.colorPicker.style.background = oColor; //this is how background will be updated

  ,

【讨论】:

有人能详细说明这个答案吗? 还有一件事:改变样式对象的属性之一非常慢。您应该将此请求包装在 window.requestAnimationFrame() 调用中 特别是如果您要更改的样式是转换(即translatetop 等)【参考方案2】:

此外,您可以使用 ref 元素更改 div 的颜色。例如:

const myReference = this.colorPicker.current // The DOM element
myReference.style.backgroundColor = "red"; // The style you want to apply

【讨论】:

【参考方案3】:

如果有人在寻找 hooks 版本

export const YourComponent = (props) => 
  const divRef: = useRef(null);
  
  yourTriggerEvent = () => 
    divRef.current.style.background = 'red';
  
  
  return (
    <div ref=divRef>
    </div>
  );

【讨论】:

以上是关于如何使用 refs 更改 ReactJS 中的样式类?的主要内容,如果未能解决你的问题,请参考以下文章

如何动态更改 ReactJS 样式?

如何在 ReactJS 中使用 ref 触发动画

ReactJS 中的内联样式

使用refs reactJS WithStyles调用嵌套子方法[重复]

如何将供应商前缀应用于 reactjs 中的内联样式?

Reactjs - 谷歌地图 - 样式信息窗口