allan hortel
¿Hay alguna manera de agregar estilos en línea con la anulación importante?
style={
height: 20+'!important'
};
<div style={style}></div>
Esto no está funcionando como hubiera esperado.
Daniel
Aparentemente, React no es compatible con esto. Pero obtuve este truco mientras investigaba.
<div ref={(node) => {
if (node) {
node.style.setProperty("float", "right", "important");
}
}}>
</div>
Buena suerte:)
-
wtf con reaccionar, hace que todas las tareas fáciles sean más difíciles
– Taufik Nur Rahmanda
24 de marzo de 2020 a las 3:00
Bandido
20+'!important'
es '20!important'
.
Cuando solo das un número, react agrega “px” por ti; pero está utilizando una cadena, por lo que debe especificar la unidad. También estoy bastante seguro de que debe haber un espacio entre “! importante” y lo que esté a la izquierda.
style={{ height: '20px !important' }};
-
O solo
'20px !important'
ya que no hay necesidad de concatenación de cadenas.– Félix Kling
15 de abril de 2014 a las 5:57
-
Trabajó en reaccionar 0.14.x pero no en reaccionar 15.0.0
– rlovtang
08/04/2016 a las 11:27
-
Estoy intentando esto con ‘%’ y sin suerte. Sin el
!important
marcar al menos veo mi valor tachado en la consola.– Jacksonkr
4 sep 2019 a las 13:18
-
Hay una declaración oficial en GitHub que no admiten
!important
a propósito. ¡Entonces esta respuesta no puede funcionar! Sin embargo, no comparto la opinión de que nunca debes usar!important
que es la razón que dan para no apoyarlo enReact inline styles
. Pero hay otra manera.– anarquista912
4 sep 2019 a las 16:40
-
“Oficial” (como en un desarrollador de React que usa ‘nosotros’ en un comentario de GitHub) declaración es “sería costoso verificar cada valor para !importante, por lo que respaldar esto no es increíble. Incluso si obtenemos una buena opción, es poco probable que hagamos esto mientras admitamos IE8 porque no quiero ir por esa ruta cssText. Esto no se trata realmente de un dogma, diría que se trata más de rendimiento.” Saben que ya se puede hacer con
ref
y nadie ha enviado un buen RFC para respaldarlo todavía, por lo que todavía no está disponible.– formicini
31 de diciembre de 2021 a las 4:08
Mario Saraiva
Un buen truco que es más limpio y consistente para otras propiedades de CSS:
ref={(el) => el && el.style.setProperty(<property>, <value>, "important")}
¡Espero que esto ayude!
-
Hola, debe consultar este artículo sobre cómo usar Markdown para formatear su código en SO
– Marcello B.
11 oct 2018 a las 16:47
Esta es la única forma en que podría hacer que funcione con React 16.
const id="unique_id";
<React.Fragment>
<style>
{`
#${id} {
background-color: transparent !important;
}
`}
</style>
<Frame id={id} />
</React.Fragment>
anarquista912
recomiendo usar componentes con estilosi tiene una buena razón para hacer uso de !important
ya que los accesorios de estilo no son compatibles !important
y probablemente no en el futuro.
Aquí hay un ejemplo donde sobrescribimos Semantic-UI’s padding
en grid columns
. De hecho, puede omitir el !important
como “aumentando la especificidad” es suficiente.
const StyledColumn = styled.div(({size}) => ({className: `${size} wide column`})`
&&&&& {
padding-top: 0.3rem !important;
padding-bottom: 0.3rem !important;
}
`
<StyledColumn size="three"></StyledColumn>
Esto es originalmente respondido por Daniel arriba. Solo quiero compartir mi respuesta mientras refactorizo su respuesta para que funcione con ganchos.
- Definir referencia
const ref = useRef(null);
- Agregue ref a su nodo deseado (por ejemplo, div, tabla)
<div ref={ref}></div>
- Agrega este código
ref.current.style.setProperty(<property>, <value>, "important")
dentro useLayoutEffect
Consulte los códigos de ejemplo a continuación.
import React, { useRef, useLayoutEffect } from "react";
const SampleComponent = () => {
const ref = useRef(null);
useLayoutEffect(() => {
ref.current.style.setProperty("border-top", "0px", "important");
}, []);
return (
<div ref={ref}>
{/* additional codes here */}
</div>
)
}
Nota:
- la propiedad está en formato CSS (por ejemplo, “border-top”)
Gary
Sí, la forma en que encontré hacer esto fue la que ya se mencionó anteriormente:
const styles = (theme: any) => ({
panelSize: {
height: 480,
width: 360,
},
progress: {
height: '120px !important',
margin: theme.spacing.unit * 2,
width: '120px !important'
}
});
Sí, tratando de obtener algunas buenas animaciones de transición de listas. Necesita saber la altura exacta para obtener la animación más suave.
– Allan Hortel
22 de abril de 2014 a las 1:42
cuidado, descubrí que configurar un estilo ‘en línea’ con reaccionar (como un objeto) con
!important
como hiciste allí, dará problemas si actualizas la propiedad con otra!important
variedad Se mantendrá el primero!important
propiedad y no actualiza…– TrySpace
25 de julio de 2014 a las 13:03
usar CSS real? Todavía estoy luchando porque estamos luchando contra lo que es natural solo para hacerlo de la manera que reacciona … pero todavía estoy interesado en esa respuesta useRef
– Andy
29 de enero de 2022 a las 0:51