2016-03-21 3 views
1

Ich möchte alle meine Elemente border-box machen. Ich möchte, dies zu tun:Reagieren: Stil alle Elemente mit Inline-Stilen

* { 
    box-sizing: border-box; 
} 

Wie ist das möglich zu tun mit der Reaktion Inline-Styles? Ich möchte diese Regel nicht in jede Komponente schreiben ...

+3

Warum können Sie nicht einzelne CSS-Regel dafür verwenden? Die gleiche Regel in jeder React-Komponente scheint wie ein Overhead – dotnetom

+0

missbrauchen Inline-Styles – naomik

+0

Ich stimme zu, dass dies albern scheint. Aber wenn Sie es tun wollten, würden Sie wahrscheinlich ein "globales" Stilobjekt durch Requisiten an jede Komponente weitergeben und es dort mit den Stilen der einzelnen Komponenten verschmelzen. – jered

Antwort

1

Dies ist nicht ratsam, da CSS viel effizienter, überschaubarer und flexibler ist. Aber wenn man wirklich wollte Stile Reagieren globale Inline haben, ich könnte es wie folgt tun:

var App = React.createClass({ 
    globalStyle: { 
     boxSizing: "border-box" 
    }, 
    render() { 
     return (
      <div> 
       <MyComponent globalStyle={this.globalStyle} /> 
      </div> 
     ); 
    } 
}); 

var MyComponent = React.createClass({ 
    style: { 
     border: "1px solid black" 
    }, 
    render() { 
     return (
      <div style={Object.assign({}, this.props.globalStyle, this.style)}></div> 
     ); 
    } 
}); 

Grundsätzlich globalen Stil überliefern zu Komponenten wie Requisiten und haben sie es dort einzubauen.

Beachten Sie, dass Object.assign() s erste Parameter ein neues leeres Objekt ist (so, dass wir unsere anderen nicht versehentlich mutieren) und dass this.style zuletzt kommt (so dass es keine globale Stile außer Kraft setzt.)

Wenn Sie wollten den globalen Stil zu ändern, würden Sie es mit React-Komponente state stattdessen tun und getInitialState usw. verwenden. Ich nehme an, dass das möglicherweise der einzige Grund sein würde, wollen Sie, um es so zu tun.

Verwandte Themen