在 React 中使用 !important 和内联样式
Using !important with inline styles in React
在 React 中使用 !important 和内联样式:
ref
在元素上设置道具。- 将函数传递给
ref
道具。 - 使用
setProperty
元素style
对象上的方法将属性设置为important
。
应用程序.js
import {useState, useLayoutEffect, useRef} from 'react'; const App = () => { const [count, setCount] = useState(0); const ref = useRef(null); useLayoutEffect(() => { ref.current.style.setProperty('display', 'block', 'important'); ref.current.style.setProperty('background-color', 'lime', 'important'); }, []); return ( <div> {/* 👇️ with ref handled in useLayoutEffect */} <h2 ref={ref}>Count: {count}</h2> {/* 👇️ with inline ref */} <h2 ref={el => { if (el) { el.style.setProperty('display', 'block', 'important'); el.style.setProperty('background-color', 'lime', 'important'); } }} > Count: {count} </h2> <button onClick={() => setCount(current => current + 1)}> Increment </button> </div> ); }; export default App;
该代码片段展示了在 React 中使用 !important 和内联样式的 2 种方法。
默认情况下不支持将 !important 添加到内联样式,因此我们必须使用 ref 并以
important
编程方式设置 CSS 属性。第一个示例使用
useRef挂钩创建一个
ref
对象。
useRef ()钩子可以传递一个初始值作为参数。该钩子返回一个可变的 ref 对象,其.current
属性被初始化为传递的参数。
请注意,我们必须访问
current
ref 对象上的属性才能访问我们设置prop的h2
元素。 ref
当我们将 ref prop 传递给元素时,例如<div ref={myRef} />
,React 将.current
ref 对象的属性设置为相应的 DOM 节点。
我们使用
setProperty
方法为元素的 CSS 样式声明对象的属性设置新值。
应用程序.js
useLayoutEffect(() => { ref.current.style.setProperty('display', 'block', 'important'); ref.current.style.setProperty('background-color', 'lime', 'important'); }, []);
该方法采用以下 3 个参数:
propertyName
– 我们要修改的 CSS 属性的名称。请注意,多个单词的属性名称必须用连字符连接。value
– CSS 属性的新值priority
– 可以设置为important
或空字符串。
该
value
参数不得包含“!important”。优先级应作为第三个参数传递给 setProperty 方法。useLayoutEffect
挂钩与 相同,但在所有 DOM 变更后同步触发。useEffect
第二个示例显示如何important
使用内联
设置 CSS 属性ref
。
应用程序.js
<h2 ref={el => { if (el) { el.style.setProperty('display', 'block', 'important'); el.style.setProperty('background-color', 'lime', 'important'); } }} > Count: {count} </h2>
我们传递给ref
prop 的函数将与元素一起调用,因此我们可以使用相同的方法将其属性设置为important
。