SVG → React
SVG เป็นคอมโพเนนต์ React
ได้ JSX พร้อมวางจากไฟล์ SVG ใดก็ได้ — แอตทริบิวต์ถูกเปลี่ยนชื่อตามที่ React ต้องการ กระจาย props ลงบนอิลิเมนต์ราก และมี TypeScript ให้ถ้าคุณต้องใช้
ไอคอนในรูปของคอมโพเนนต์
ทำไมจึงวาง SVG ลงใน JSX ตรง ๆ ไม่ได้
JSX ดูเหมือนมาร์กอัป แต่จริง ๆ แล้วมันคือ JavaScript แอตทริบิวต์ที่มีขีดกลางอย่าง stroke-width ไม่ใช่ตัวระบุที่ถูกต้อง คำว่า class ชนกับคำสงวน และวงเล็บปีกกาในสไตล์แบบอินไลน์จะถูกอ่านเป็นนิพจน์ SVG ที่คัดลอกตรงมาจากโปรแกรมออกแบบจึงมักคอมไพล์ไม่ผ่านด้วยเหตุผลอย่างน้อยหนึ่งข้อ
ตัวแปลงนี้เปลี่ยนชื่อเฉพาะสิ่งที่จำเป็นต้องเปลี่ยน และปล่อยส่วนที่เหลือไว้อย่างเดิม แอตทริบิวต์ data- และ aria- ยังคงขีดกลางไว้ เพราะ React ส่งต่อมันไปโดยไม่แตะต้อง — การไปเปลี่ยนชื่อพวกนี้เป็นสาเหตุยอดฮิตที่ทำให้ป้ายกำกับด้านการเข้าถึงหายไปเงียบ ๆ
สามขั้นตอน
วิธีแปลง SVG เป็นคอมโพเนนต์ React
01
วางไฟล์ SVG
เลือกไฟล์ .svg — ไฟล์ยังอยู่ในอุปกรณ์ของคุณ
02
คัดลอกบล็อกที่ต้องการ
คอมโพเนนต์เต็ม เวอร์ชัน TypeScript หรือ JSX ล้วน ๆ
03
วางลงในโปรเจกต์
import เหมือนคอมโพเนนต์อื่น แล้วจัดสไตล์ผ่าน props