如何在 React.js 中使用 JavaScript 修改 CSS

Posted

技术标签:

【中文标题】如何在 React.js 中使用 JavaScript 修改 CSS【英文标题】:How to modify CSS using JavaScript in React.js 【发布时间】:2020-12-31 12:32:42 【问题描述】:

如何在 React 上使用 javascript 更改 css 样式?

例如,我会这样做:


document.querySelector('.container').style.backGroundColor='purple';



对吗?还是我应该用另一种方式来实现?

【问题讨论】:

你在 React 中的 CSS 遵循了哪种方式? 【参考方案1】:

你可以使用 style 属性。

<SomeComponent style=
    backgroundColor: someCondition ? 'purple' : null
 />

【讨论】:

避免像瘟疫一样的内联样式。在当时似乎是个好主意,但以后会变得很难维护【参考方案2】:

考虑段落元素

document.getElementsByClassName("container").style.color = "blue";

【讨论】:

这是一种非常必要的方式,与 React 相矛盾。 @StefanBajić 你能否详细说明它与 React 有何矛盾? 我认为你的代码会在组件的下一次渲染后中断【参考方案3】:

在 Reactjs 中更改 css 的简单方法是 Inline styling。其他方式可以查看:https://codeburst.io/4-four-ways-to-style-react-components-ac6f323da822

举个例子。如果您想更改用户状态的颜色。活动为绿色,非活动为红色。

const Example = (props) => 
    let isActive = Math.floor(Math.random() * 2) % 2 === 0;
    const color = isActive ? 'green' : 'red';

    return <div style=backgroundColor: color> isActive ? 'Active' : 'Deactive' </div>;

或者:

const Example = (props) => 
    let isActive = Math.floor(Math.random() * 2) % 2 === 0;
    
    return <div style=backgroundColor: isActive ? 'green' : 'red'> isActive ? 'Active' : 'Deactive' </div>;

或所有样式:

const Example = (props) => 
    let isActive = Math.floor(Math.random() * 2) % 2 === 0;
    let styleStatus = isActive ?
        
            backgroundColor: 'green',
            fontSize: '20',
         :
        
            backgroundColor: 'red',
            fontSize: '15',
        ;

    return <div style=styleStatus> isActive ? 'Active' : 'Deactive' </div>;

【讨论】:

【参考方案4】:

像这样创建一个 const 类型的 obj(必须在 render 方法中创建)

const mystyle = 
      color: "white",
      backgroundColor: "DodgerBlue",
      padding: "10px",
      fontFamily: "Arial"
    ;

并像这样将其分配给您的元素

h1 style=mystyle>Hello Style!</h1>

【讨论】:

以上是关于如何在 React.js 中使用 JavaScript 修改 CSS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React.js 中使用 Google 字体?

如何在 node.js 中导入 font-awesome 以在 react.js 中使用?

如何在 React.js 中使用 JavaScript 修改 CSS

React JS:如何在 react-spring 中使用响应式样式

如何在 react.js 中使用 json

如何在 React.js 中使用 react-router-dom 保持 App() 级别状态不重置?