Non è possibile eseguire operazioni come query multimediali e pseudo elementi senza un foglio di stile. Tuttavia, puoi accedere alle informazioni su cui sono basate su JavaScript. Ad esempio, un'implementazione ingenuo di un mixin ridimensionamento:
var ResizeMixin = {
componentDidMount: function(){
window.addEventListener('resize', this._resize_mixin_callback);
},
_resize_mixin_callback: function(){
this.setState({
viewport: {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
});
},
componentWillUnmount: function(){
window.removeEventListener('resize', this._resize_mixin_callback);
}
};
Si potrebbe quindi includere che nel componente, e hanno un rendering che assomiglia a questo:
render: function(){
var style;
if (this.state.viewport.width > 900) {
style = {width: '45%', margin: '2.5%'};
}
else {
style = {width: '100%', margin: '0'};
}
...
}
io non sono sicuro che questo è una buona idea, ma può essere fatta.
Con "implementazione ingenua" intendo che ha problemi di prestazioni. addEventListener è in realtà piuttosto pesante, quindi si desidera avvolgerlo in un semplice emettitore di eventi js. È anche possibile avere una sola istanza dell'oggetto viewport per salvare la pressione del GC. E tu vuoi limitare l'evento perché i browser lo emetteranno molto velocemente durante il trascinamento della finestra.
Come con tutte le buone astrazioni, è possibile effettuare queste ottimizzazioni quando si ha del tempo libero e non è necessario modificare i componenti che lo utilizzano.
Sii specifico sulla tua domanda, Se c'è già una domanda simile sul sito prova a scrivere commenti a quella domanda in modo da ottenere risposte e nessuno avrà il tempo di passare i tuoi link e riassumere quindi darti una risposta ..! – Chella