!反应中重要的内联样式

All*_*tle 16 javascript reactjs

它的存在方式来增加内嵌样式的!重要覆盖?

style={
  height: 20+'!important'
};

<div style={style}></div>
Run Code Online (Sandbox Code Playgroud)

这不像我希望的那样有效.

小智 11

显然React不支持这一点.但是当我做我的研究时,我得到了这个黑客

    <div ref={(node) => {
      if (node) {
        node.style.setProperty("float", "right", "important");
      }
    }}>                    
    </div>
Run Code Online (Sandbox Code Playgroud)

祝好运:)

  • wtf 与反应,让所有简单的任务变得更加困难 (15认同)
  • 令人惊讶的是,到了 2023 年,React 仍然不支持这一点!很棒的技巧,因为它很简单,而且很有魅力! (2认同)

Bri*_*and 8

20+'!important''20!important'.

当你给一个数字时,反应为你添加"px"; 但是你正在使用一个字符串,所以你必须指定单位.此外,我敢肯定,需要有间"!重要"和什么是对的它的左边的空间.

style={
  height: 20 + 'px !important' // 20px !important
};
Run Code Online (Sandbox Code Playgroud)

  • 参与反应0.14.x但不反应15.0.0 (34认同)
  • GitHub 上有官方声明,他们故意不支持`!important`。**所以这个答案不起作用!** 但是我不同意你永远不应该使用 `!important` 的观点,这就是他们在 `React 内联样式` 中不支持它的原因。但还有另一种[方式](/sf/answers/4010521161/)。 (20认同)
  • 或者只是''20px!important'`,因为不需要字符串连接. (3认同)
  • 我正在用 '%' 尝试这个,但没有运气。如果没有 `!important` 标志,至少我在控制台中看到了带有删除线的值。 (3认同)

Jus*_*age 7

这是我可以让它与 React 16 一起工作的唯一方法。

const id="unique_id"; 
<React.Fragment>
    <style>
      {`
#${id} {
  background-color: transparent !important;
}
      `}
    </style>
    <Frame id={id} />
</React.Fragment>
Run Code Online (Sandbox Code Playgroud)


小智 5

一个很好的使用技巧,它对其他 CSS 属性更清晰、更一致:

ref={(el) => el && el.style.setProperty(<property>, <value>, "important")}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


ana*_*912 5

如果您有充分的理由使用样式组件,我建议您使用样式组件!important,因为样式道具不支持!important并且将来可能不会支持。

padding这是一个我们覆盖上的Semantic-UI 的示例grid columns。实际上您可以省略,!important因为“提高特异性”就足够了。

const StyledColumn = styled.div(({size}) => ({className: `${size} wide column`})`
    &&&&& {
        padding-top: 0.3rem !important;
        padding-bottom: 0.3rem !important;
    }
`
<StyledColumn size="three"></StyledColumn>
Run Code Online (Sandbox Code Playgroud)

&&&&&& <- 提高特异性。