Mam prosty komponent React, który akceptuje rekwizyt, który ukrywa/pokazuje dzieci komponentu. Ukrywam/pokazuję, używając atrybutu stylu i display: none
. Jeśli użyję display: none !important
, komponent przestanie się wyświetlać ponownie po otrzymaniu nowych rekwizytów.React dodając! Ważne wydaje się przerwać ponowne renderowanie komponentu
wewnątrz metody renderowania, wygląda to tak:
var style = {};
if(shouldHide) {
//this works
style = {
display: 'none'
};
//this does not
//style = {
// display: 'none !important'
//};
}
return (
<span style={style} {...this.props} />
);
Oto pełny przykład: https://jsfiddle.net/ccnokes/LnrnrLy2/ (odpowiednie linie zaczynają się od linii 27)
Co tu się dzieje? Czy czegoś brakuje?
Dlaczego musisz 'important' w ogóle! Style wewnętrzne mają wyższy priorytet niż wszystkie inne style. –
Jeśli arkusz stylów ma z jakiegoś powodu "display: block! Important", styl liniowy go nie przełączy, prawda? – ccnokes
Tak, masz rację. Mój błąd. –