在 React 中的图像标签中渲染 css 类

Posted

技术标签:

【中文标题】在 React 中的图像标签中渲染 css 类【英文标题】:Render css class in image tag in react 【发布时间】:2016-09-04 14:15:16 【问题描述】:

我正在用 React 制作一个应用程序,我希望在单击按钮后旋转和翻译图像。

render: function() 
    var imageSrc = this.props.imageSrc;
    var rotate = this.props.rotate;
    var translate = this.props.translate;
    var opacity = this.props.opacity;
    var scale = this.props.scale;
 
    return (
      <div>
        <img src=imageSrc tyle=opacity: opacity? 0.5:1,height: scale? 600:300, width: scale? 800:400/>
        <div>
          <input type="file" onChange=this.handleChangeFile />
        </div>
      </div>
    );
  
);

我在 style 标签中设置了 opacity 和 scale 属性,但我不知道如何添加旋转和翻译,因为它们没有 html 标签。

所以我在 JXS 之外创建了一个变量, var imageRotate; 如果(旋转===真) className='rotator'

  return (
    <div>
     <img src=imageSrc style=className=imageRotate/>
    <div>

但它不起作用。我想知道将 css 传递到图像标签的最佳方法是什么?

【问题讨论】:

【参考方案1】:

以一种反应的方式,我建议将关注点分开:

在 css 中制作前后样式(而不是在 react 中使用内联样式),并将变换、旋转等放在后类中。 在您的反应代码中,将点击处理程序添加到您的 &lt;img&gt;,它将新类应用于您的 &lt;img&gt; 组件

示例代码(每次单击时都会更改类)如下所示:

class Application extends React.Component 
  constructor(props) 
    super(props);
    this.state= className: 'class1' 
  
  handleClick() 
    this.setState(
      className: (this.state.className=='class1')? 'class2' : 'class1'
    )
  
  render() 
    return <div>
      <p className=this.state.className 
         onClick=() => this.handleClick()>
           click me to change color
      </p>
    </div>;
  

在本例中,class1class2 应用于 &lt;p&gt; 元素,但原理相同。

Working codepen here.

【讨论】:

【参考方案2】:

平移和旋转是 CSS transform 属性的一部分。您可以像任何其他 CSS 一样在样式中设置 transform

例如,要处理基本的 React JSfiddle:

var Hello = React.createClass(
  render: function() 
    return <div style=transform:"translate(10px, 10px) rotate(-15deg)">Hello this.props.name</div>;
  
);

ReactDOM.render(
  <Hello name="World" />,
  document.getElementById('container')
);

见 jsfiddle:https://jsfiddle.net/a02jkshm/

【讨论】:

以上是关于在 React 中的图像标签中渲染 css 类的主要内容,如果未能解决你的问题,请参考以下文章

有条件渲染图像时 React 中的图像闪烁问题

React 如何在嵌套数据对象中渲染动态图像

如何在服务器端做出反应来渲染图像?

如何在 React 中检测图像地图中的区域标签 onClick

无法在 NextJS React 组件中获取背景图像渲染 [已解决但无法解释]

Nrwl Storybook React 不渲染图像