मैं निम्नलिखित कोड है:कुछ एक बार करते हैं, तो में प्रत्येक 15 सेकंड js प्रतिक्रिया
var Panel = React.createClass({
getInitialState: function() {
return {
user_id: null,
blogs: null,
error: false,
error_code: '',
error_code: ''
};
},
shouldComponentUpdate: function(nextProps, nextState) {
if (nextState.error !== this.state.error ||
nextState.blogs !== this.state.blogs ||
nextState.error_code !== this.state.error_code
) {
return true;
}
},
componentDidMount: function() {
var self = this;
var pollingInterval = setInterval(function() {
$.get(self.props.source, function(result) {
if (self.isMounted()) {
self.setState({
error: false,
error_code: '',
error_message: '',
blogs: result.user.blogs,
user_id: result.user.id
});
}
}.bind(self)).fail(function(response) {
self.setState({
error: true,
error_code: response.status,
error_message: response.statusText
});
}.bind(self));
}, 1000);
},
render: function() { ... }
});
पर ध्यान देना बहुत जरूरी हिस्सा componentDidMount
है यदि कोई त्रुटि होती है या नहीं यह, हर दूसरे लायेगा परवाह किए बिना । रेंडर फ़ंक्शन, मानते हुए एक त्रुटि मानता है, उपयुक्त विधि प्रदर्शित करेगा। तो सभी गहन और उद्देश्य के लिए, यह कोड वही करता है जो मैं करना चाहता हूं, अगर यह विफल रहता है, तो यह प्राप्त होता है, यह तब तक फिर से प्राप्त होता है जब तक यह सफल नहीं हो जाता है।
लेकिन मैं कुछ बदलाव करने की जरूरत है, और इस मैं कहाँ खो रहा हूँ। मैं कहना चाहता हूं: एक बार प्राप्त करें, पास या असफल - इससे कोई फर्क नहीं पड़ता। पास की परवाह किए बिना या असफल
इस विशिष्ट मामले में है मैं सामान्य रूप से एक रीढ़ संग्रह और रूटर ऊपर स्पिन होगा यह सब करने के लिए एक जनमत सर्वेक्षण सहायक के साथ, लेकिन कोई - तो प्रत्येक 15 सेकंड कि प्रारंभिक लाने के बाद, फिर से कोशिश अतिरिक्त ओवरहेड की आवश्यकता है। तो वह है जहां मैं फंस गया हूँ। मैं प्राप्त करने का प्रयास कर रहा हूं जो मैं पूरा कर सकता हूं?
आप नहीं कर सकते बस एक विधि जोड़ें जो बढ़ने के बाद, हर 15 सेकंड कहा जाता है? बस उस कोड को 'setInterval' के शरीर में एक फ़ंक्शन में ले जाएं, और' घटकडिडमाउंट' में, इसे शुरू करें। और दोहराओ। आप 'isMounted()' संभावित रूप से जांचना चाहते हैं। – WiredPrairie
मुझे लगता है कि सोच रहा था, लेकिन मुझे नहीं पता था कि अगर काम करेगा क्योंकि मेरा मानना है कि componentDidMount केवल एक बार के बाद कहा जाता है प्रस्तुत करना? जब तक एक दरार सिर नहीं है? – TheWebs
(मुझे दवा की आदतों के बारे में निश्चित नहीं है ... :-))। हां, 'घटकडिडमाउंट' केवल एक बार निष्पादित किया जाता है: http://facebook.github.io/react/docs/component-specs.html। तो, आप इसे वहां शुरू कर सकते हैं। जब घटक अनमाउंट किया जाता है तो आप टाइमर को अक्षम करना चाहते हैं। – WiredPrairie