दस्तावेज़ में कोई स्पष्ट तरीका नहीं बताया गया है और आपका समाधान काम करेगा लेकिन वास्तव में बहुत सुरुचिपूर्ण नहीं है। मेरा खुद का पसंदीदा समाधान स्क्रिप्ट ब्लॉक में करी का उपयोग करना है।
const handleClick = (parameter) => () => {
// actual function
}
और HTML में
<button on:click={handleClick('parameter1')>
It works...
</button>
करीने से सावधान रहें
जैसा कि टिप्पणियों में उल्लेख किया गया है, करी के पास इसके नुकसान हैं। सबसे आम एक है कि उपरोक्त उदाहरण में handleClick('parameter1')
क्लिक करने पर फायर नहीं किया जाएगा, बल्कि रेंडर करने पर, एक फ़ंक्शन लौटाएगा जो बदले में ऑनक्लिक फायर किया जाएगा। इसका मतलब है कि यह फ़ंक्शन हमेशा 'पैरामीटर 1' का उपयोग करेगा क्योंकि यह तर्क है।
इसलिए इस पद्धति का उपयोग करना केवल तभी सुरक्षित होगा जब उपयोग किया गया पैरामीटर किसी प्रकार का एक स्थिर है और एक बार इसे प्रस्तुत करने के बाद बदल नहीं जाएगा।
यह मुझे एक और बिंदु पर लाएगा:
1) यदि यह एक निरंतर उपयोग किया जाने वाला पैरामीटर है, तो आप एक अलग फ़ंक्शन का उपयोग कर सकते हैं
const handleParameter1Click = () => handleClick('parameter1');
2) यदि मान गतिशील है, लेकिन घटक के भीतर उपलब्ध है, तो यह अभी भी एक स्टैंडअलोन फ़ंक्शन के साथ संभाला जा सकता है:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) यदि मान गतिशील है, लेकिन घटक से उपलब्ध नहीं है, क्योंकि यह कुछ प्रकार के दायरे पर निर्भर है (उदाहरण: #each ब्लॉक में प्रदान की गई वस्तुओं की सूची) ' हैकी ' दृष्टिकोण बेहतर काम करेगा। हालाँकि मुझे लगता है कि यह उस मामले में बेहतर होगा कि लिस्ट-एलिमेंट्स एक कंपोनेंट के रूप में हों और केस टू # 2 में वापस आएं
निष्कर्ष निकालने के लिए: करीकरण कुछ परिस्थितियों में काम करेगा लेकिन अनुशंसित नहीं है जब तक कि आप इसका उपयोग करने के बारे में बहुत अच्छी तरह से वाकिफ और सावधान न हों।