स्पष्ट render
फोन नहीं है:
class HomeTab extends React.Component {
constructor() {
super()
this.setState({
isNavBarHidden: false
});
}
updatePosition(lastPosition) {
}
navbarChanged() {
console.log("received navbar changed event", AppStore.navbarVisible());
if (AppStore.navbarVisible()) {
StatusBarIOS.setHidden(false)
this.setState({ isNavBarHidden: false})
// this.state.isNavbarHidden is still true here
this.render();
}
else {
StatusBarIOS.setHidden(true);
this.setState({ isNavBarHidden: true});
this.render();
}
}
componentDidMount() {
AppStore.addNavbarChangeListener(this.navbarChanged.bind(this));
}
componentWillMount() {
StatusBarIOS.setHidden(false)
this.setState({ isNavBarHidden: false });
}
}
और यहाँ मेरी प्रस्तुत करना() कोड है। जब राज्य या प्रोप बदलते हैं तो प्रतिक्रिया स्वचालित रूप से फिर से प्रस्तुत की जाएगी, इसलिए इसके लिए कोई आवश्यकता नहीं है। साथ ही, आपकी वास्तविक render
विधि कहां है?
आपकी समस्या के लिए अच्छी तरह से, setState
असीमित है और इसलिए setState
कॉल के बाद सीधे स्थिति के साथ काम करने का प्रयास नहीं किया जाएगा क्योंकि अद्यतन आवश्यक रूप से चलाना आवश्यक नहीं होगा। इसके बजाय आप जो एक कॉलबैक है setState
से पीछे तर्क का उपयोग कर सकते हैं:
this.setState({ myVal: 'newVal'}, function() {
// do something with new state
});
के बाद राज्य स्थापित किया गया है यह ट्रिगर किया जाएगा और बाद घटक फिर से गाया गया है।
स्रोत
2015-06-16 12:26:37
आपके उत्तर के लिए बहुत बहुत धन्यवाद। 'सेटस्टेट' असीमित होने के कारण इस प्रश्न का उत्तर देता है। मैंने अपना कोड मेरे रेंडर विधि() के साथ अपडेट किया है। मैं रेंडर() से छुटकारा पाउंगा; आपने जो सुझाव दिया वह समझ में आता है। मैं अभी भी उलझन में हूं हालांकि मेरा नेविगेशन क्यों नहीं दिखा रहा है (लेकिन टाइटलबार है)। – Abdo
वाह धन्यवाद - मुझे पता नहीं था कि सेटस्टेट एसिंक है - सेट से एटीएनसी - एफएआर से कई ऑनलाइन टट्स का कहना है कि यूआई इसे कॉल करने के बाद प्रस्तुत करेगा - यह तुरंत नहीं है और आपके उत्तर ने मुझे बड़े पैमाने पर मदद की है। धन्यवाद – landed