मैं Reactjs राउटर से लिंक घटक का उपयोग कर रहा हूं और मुझे ऑनक्लाइक काम नहीं मिल सकता है। यह कोड है:
<Link to={this.props.myroute} onClick='hello()'>Here</Link>
क्या यह ऐसा करने का तरीका है या दूसरा तरीका है?
जवाबों:
आपको इसका उपयोग करना चाहिए:
<Link to={this.props.myroute} onClick={hello}>Here</Link>
या (यदि विधि hello
इस वर्ग में रहती है):
<Link to={this.props.myroute} onClick={this.hello}>Here</Link>
अपडेट: ES6 के लिए और नवीनतम यदि आप क्लिक विधि के साथ कुछ परम को बांधना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
const someValue = 'some';
....
<Link to={this.props.myroute} onClick={() => hello(someValue)}>Here</Link>
<Link to="" onClick={this.delete}>Delete</Link>
। काश "यहाँ" वैकल्पिक है।
Link
बिना उपयोग क्यों करेंगे to
? यदि आपको इसकी आवश्यकता नहीं है, तो बस कुछ अन्य घटक जैसे <button>
कि onClick
विधि के साथ और आप जाने के लिए अच्छा है;)।
मेरा मानना है कि यह सामान्य रूप से उपयोग करने के लिए एक अच्छा पैटर्न है। लिंक आपके ऑनक्लिक इवेंट को चलाएगा और फिर रूट पर नेविगेट करेगा, इसलिए नए रूट पर नेविगेट करने में थोड़ी देरी होगी। एक बेहतर रणनीति आपके द्वारा किए गए 'टू' प्रॉप के साथ नए मार्ग पर नेविगेट करना है, और नए घटक के घटकडिमाउंट () फ़ंक्शन में आप अपने हैलो फ़ंक्शन या किसी अन्य फ़ंक्शन को आग लगा सकते हैं। यह आपको एक ही परिणाम देगा, लेकिन मार्गों के बीच अधिक चिकनी संक्रमण के साथ।
संदर्भ के लिए, मैंने लिंक पर ऑनक्लिक इवेंट के साथ अपने रेडक्स स्टोर को अपडेट करते समय इस पर ध्यान दिया जैसे कि आप यहां हैं, और इसने नए रूट के घटक को आगे बढ़ाने से पहले ~ .3 सेकंड खाली-सफेद-स्क्रीन देरी का कारण बना। कोई एपि कॉल शामिल नहीं था, इसलिए मुझे आश्चर्य हुआ कि देरी इतनी बड़ी थी। हालाँकि, यदि आप 'हेलो' लॉगिंग को सांत्वना दे रहे हैं, तो देरी ध्यान देने योग्य नहीं है।
onClick
नए मार्ग में परिवर्तित करने से पहले कुकी में बचत कर रहा हूं । मुझे लगता है कि अगले घटक में कॉलबैक यूआरएल नहीं मिलेगा, इसलिए मुझे खुद को संक्रमण से पहले करना होगा। क्या आपके पास इसका कोई विकल्प है? पुनश्च: कॉलबैक url ताज़ा होने के बाद भी सुलभ होना चाहिए ताकि इसे स्टोर में सहेजा जा सके।
onPress={() => { this.props.navigation.navigate('NameOfNextScreen', { callbackUrl: 'http://.callbackUrl.com', });
हैं यदि आप प्रतिक्रिया-नेविगेशन I का उपयोग नहीं कर रहे हैं बस लिंक के onClick का उपयोग करें और मामूली प्रदर्शन समस्या के बारे में चिंता न करें। यह शायद ध्यान देने योग्य नहीं होगा।
this.hello.bind(this)