ไม่มีวิธีที่ชัดเจนที่กล่าวถึงในเอกสารประกอบและวิธีการแก้ปัญหาของคุณจะทำงานได้ แต่ไม่สวยมาก โซลูชันที่ฉันต้องการคือใช้การแช่งในบล็อกสคริปต์
const handleClick = (parameter) => () => {
// actual function
}
และในรูปแบบ HTML
<button on:click={handleClick('parameter1')>
It works...
</button>
ระวังการแกง
ดังที่ได้กล่าวไว้ในความคิดเห็นแกงกะหรี่มีข้อผิดพลาด ตัวอย่างที่พบบ่อยที่สุดซึ่งในตัวอย่างด้านบนhandleClick('parameter1')
จะไม่ถูกยิงเมื่อคลิก แต่เป็นการแสดงผล แต่จะส่งคืนฟังก์ชันที่จะถูกเปิดใช้งาน onclick ซึ่งหมายความว่าการทำงานนี้จะมักจะใช้ 'พารามิเตอร์ 1' ในขณะที่มันเป็นข้อโต้แย้ง
ดังนั้นการใช้วิธีนี้จะปลอดภัยหากพารามิเตอร์ที่ใช้เป็นค่าคงที่บางชนิดและจะไม่เปลี่ยนแปลงเมื่อมีการแสดงผล
สิ่งนี้จะพาฉันไปที่จุดอื่น:
1) หากเป็นค่าคงที่ที่ใช้พารามิเตอร์คุณสามารถใช้ฟังก์ชันแยกกันได้เช่นกัน
const handleParameter1Click = () => handleClick('parameter1');
2) หากค่าเป็นแบบไดนามิก แต่พร้อมใช้งานภายในส่วนประกอบสิ่งนี้สามารถจัดการได้ด้วยฟังก์ชันสแตนด์อโลน:
let parameter1;
const handleParameter1Click = () => handleClick(parameter1);
3) หากค่าเป็นแบบไดนามิก แต่ไม่พร้อมใช้งานจากองค์ประกอบเนื่องจากสิ่งนี้ขึ้นอยู่กับขอบเขตบางประเภท (เช่น: รายการของรายการที่แสดงในบล็อก #each) วิธีการ'แฮ็ค'จะทำงานได้ดีขึ้น อย่างไรก็ตามฉันคิดว่ามันจะดีกว่าถ้าในกรณีนั้นมี list-elements เป็นส่วนประกอบเองและถอยกลับไปเป็น case # 2
ในการสรุป: การแกงจะทำงานได้ในบางกรณี แต่ไม่แนะนำเว้นแต่คุณจะทราบดีและระมัดระวังในการใช้งาน