Wie kann ich React dazu bringen, die Ansicht neu zu rendnern, wenn das Browserfenster neu skaliert wird?
Hintergrund
Ich habe einige Blöcke, die ich individuell auf der Seite anordnen möchte, aber ich möchte auch, dass sie sich ändern, wenn sich das Browserfenster ändert. Das Endergebnis wird letztendlich etwas ähnliches wie Ben Hollands Pinterest Layout sein, jedoch geschrieben in React und nicht nur jQuery. Ich bin noch weit davon entfernt.
Code
Hier ist meine App:
var MyApp = React.createClass({
//führt das http get vom Server aus
loadBlocksFromServer: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
mimeType: 'textPlain',
success: function(data) {
this.setState({data: data.events});
}.bind(this)
});
},
getInitialState: function() {
return {data: []};
},
componentWillMount: function() {
this.loadBlocksFromServer();
},
render: function() {
return (
);
}
});
React.renderComponent(
,
document.getElementById('view')
)
Dann habe ich das Block
Komponente (entspricht einem Pin
im obigen Pinterest Beispiel):
var Block = React.createClass({
render: function() {
return (
{this.props.title}
{this.props.children}
);
}
});
und die Liste/Kollektion von Blocks
:
var Blocks = React.createClass({
render: function() {
//Ich habe vorübergehend Code, der eine zufällige Position zuweist
//Siehe innerhalb der folgenden Funktion...
var blockNodes = this.props.data.map(function (block) {
//temporäre zufällige Position
var topOffset = Math.random() * $(window).width() + 'px';
var leftOffset = Math.random() * $(window).height() + 'px';
return {block.description};
});
return (
{blockNodes}
);
}
});
Frage
Sollte ich das window resize von jQuery hinzufügen? Wenn ja, wo?
$( window ).resize(function() {
// Komponente neu rendern
});
Gibt es eine "React"-artige Möglichkeit, dies zu tun?