जब ब्राउज़र विंडो का आकार बदल दिया जाता है, तो मैं उस दृश्य को फिर से कैसे प्रस्तुत कर सकता हूं?
पृष्ठभूमि
मेरे पास कुछ ब्लॉक हैं जो मैं पृष्ठ पर व्यक्तिगत रूप से लेआउट करना चाहता हूं, हालांकि मैं यह भी चाहता हूं कि ब्राउज़र विंडो में परिवर्तन होने पर वे अपडेट करें। बहुत अंतिम परिणाम बेन हॉलैंड के Pinterest लेआउट की तरह कुछ होगा , लेकिन केवल रिएक्ट नहीं jQuery का उपयोग करते हुए लिखा गया है। मैं अभी भी एक रास्ता हूँ।
कोड
यहाँ मेरा ऐप है:
var MyApp = React.createClass({
//does the http get from the server
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 (
<div>
<Blocks data={this.state.data}/>
</div>
);
}
});
React.renderComponent(
<MyApp url="url_here"/>,
document.getElementById('view')
)
तब मेरे पास Block
घटक है ( Pin
उपरोक्त Pinterest उदाहरण में बराबर ):
var Block = React.createClass({
render: function() {
return (
<div class="dp-block" style={{left: this.props.top, top: this.props.left}}>
<h2>{this.props.title}</h2>
<p>{this.props.children}</p>
</div>
);
}
});
और सूची / संग्रह Blocks
:
var Blocks = React.createClass({
render: function() {
//I've temporarily got code that assigns a random position
//See inside the function below...
var blockNodes = this.props.data.map(function (block) {
//temporary random position
var topOffset = Math.random() * $(window).width() + 'px';
var leftOffset = Math.random() * $(window).height() + 'px';
return <Block order={block.id} title={block.summary} left={leftOffset} top={topOffset}>{block.description}</Block>;
});
return (
<div>{blockNodes}</div>
);
}
});
सवाल
क्या मुझे jQuery की विंडो का आकार बदलना चाहिए? यदि हां, तो कहां?
$( window ).resize(function() {
// re-render the component
});
क्या ऐसा करने का एक और "रिएक्ट" तरीका है?
this.updateDimensions
पारित कर दिया करने के लिएaddEventListener
सिर्फ एक नंगे समारोह संदर्भ जिसके लिए कोई मूल्य नहीं होगाthis
जब कहा जाता है। एक अनाम फ़ंक्शन, या एक .bind () कॉल को जोड़ने के लिए उपयोग किया जाना चाहिएthis
, या मुझे गलत समझा गया है?