เผยแพร่เมื่อ 2026-08-05 · โดย ทีม MarkupGen
จาก Figma สู่ React: เวิร์กโฟลว์ที่ใช้งานได้จริงสำหรับนักพัฒนา

การสร้าง React component จากดีไซน์ Figma ที่เสร็จแล้วด้วยมือ เป็นงานที่ดูง่ายตอนอยู่ในไฟล์ดีไซน์ แต่พอเปิดโค้ดเอดิเตอร์ขึ้นมาก็กลายเป็นงานที่น่าเบื่อทันที ไม่ใช่แค่การเขียน component เท่านั้น แต่ต้องคำนวณ spacing การจัดวาง และพฤติกรรม responsive ที่มีอยู่แล้วในดีไซน์กลับมาใหม่ทั้งหมด แล้วก็หวังว่าผลลัพธ์สุดท้ายจะยังตรงกับดีไซน์ หลังจากตัดสินใจเล็ก ๆ น้อย ๆ มาหลายสิบครั้ง นี่คือเวิร์กโฟลว์ Figma to React ที่ใช้งานได้จริง และช่วยให้วิจารณญาณเหล่านั้นถูกโฟกัสไปที่ส่วนที่จำเป็นจริง ๆ นั่นคือขอบเขตของ component พฤติกรรมของ layout และผลลัพธ์ที่ยังใช้งานได้ดีในทุกขนาดหน้าจอ
ทำไมการสร้าง React component จาก Figma ด้วยมือถึงช้า
เวลาส่วนใหญ่ที่นักพัฒนาใช้ไปกับการส่งต่องานนี้ ไม่ได้ใช้ไปกับการแก้ปัญหาที่ยาก แต่ใช้ไปกับการ "แปล" การตัดสินใจด้านดีไซน์ที่เสร็จแล้วให้เป็นอีกฟอร์แมตหนึ่ง เช่น
- อ่านการตั้งค่า Auto Layout ของแต่ละเลเยอร์ แล้วเขียนใหม่เป็น Flexbox rule ใน JSX ด้วยมือ
- วัด padding, gap และขนาดฟอนต์ ที่จริง ๆ ถูกกำหนดไว้แม่นยำอยู่แล้วในไฟล์ Figma
- เดาว่า component ควรจะ responsive ตั้งแต่จุดไหน เพราะ frame ใน Figma มักมีแค่ความกว้างคงที่ค่าเดียว
- ออกแบบโครงสร้าง component และ props ใหม่ตั้งแต่ต้น แทนที่จะเริ่มจากอะไรที่ใช้งานได้อยู่แล้ว
งานเหล่านี้ไม่ได้ต้องการทักษะด้านดีไซน์ หรือ engineering ที่ซับซ้อนอะไรเลย มันคืองานที่ทำซ้ำ ๆ และเป็นกลไก และงานทำมือที่ทำซ้ำ ๆ แบบนี้เองที่มักเป็นจุดที่ทำให้ดีไซน์กับ UI ที่ปล่อยจริงเริ่มไม่ตรงกัน
จาก Figma component สู่ React component
ไม่มีกฎตายตัวข้อเดียวสำหรับการเปลี่ยนเลเยอร์ใน Figma ให้กลายเป็น React component เพราะขึ้นอยู่กับว่าสิ่งนั้นซ้ำกันมากแค่ไหน variant ของมันสื่อถึงอะไร และโครงสร้างของแอปส่วนที่เหลือเป็นแบบไหน จุดเริ่มต้นที่ใช้ได้ทั่วไปคือ Figma component ที่มี variant (เช่น Button ที่มีสถานะ primary/secondary) มักจะกลายเป็น React component เดียว โดยจัดการ variant เหล่านั้นผ่าน props แทนที่จะแยก component ต่างหากสำหรับแต่ละสถานะ
<Button variant="primary" size="md">
Get started
</Button>
หลักการเดียวกันนี้ใช้ได้กับทุกอย่างที่ซ้ำกันในดีไซน์ การ์ดที่หน้าตาคล้ายกันสามใบในไฟล์ Figma คือสัญญาณว่าควรมี Card component เดียวที่ render จาก array ของข้อมูล ไม่ใช่ JSX แบบเดียวกันสามชุด ข้อผิดพลาดที่พบบ่อยที่สุดในเรื่องนี้คือการแยก component มากเกินไป การเปลี่ยนทุก Auto Layout frame ให้เป็นไฟล์แยกของตัวเองเพิ่มความซับซ้อนโดยไม่ได้เพิ่มการนำกลับมาใช้ซ้ำ หากต้องการดูการแมปแนวคิด Figma-to-React แบบละเอียดกว่านี้ รวมถึงจุดที่ขอบเขตของ component และ variant props มักผิดพลาด ดูได้ที่ จาก Figma Auto Layout สู่ React: จากเฟรมสู่ Component
เวิร์กโฟลว์ของ MarkupGen เมื่อนำมาใช้กับ React
MarkupGen เป็นแพลตฟอร์ม SaaS ที่มาพร้อม Figma plugin สำหรับแปลงดีไซน์ Figma ให้เป็น HTML, CSS หรือ React component เพื่อให้เริ่มต้นจากโค้ดที่ generate ไว้แล้ว แทนที่จะเริ่มจากไฟล์ component เปล่า ๆ เวิร์กโฟลว์มีทั้งหมด 4 ขั้นตอน
1. Export frame จาก Figma เลือก frame ที่ต้องการแปลง แล้วส่งเข้า workspace ของคุณด้วย Figma plugin ของ MarkupGen ตัว plugin จะดึงโครงสร้าง สไตล์ และรูปภาพของ frame ออกมาพร้อมกันทั้งหมด ไม่ต้องคัดลอกทีละเลเยอร์เอง
2. AI สร้างโค้ดจากดีไซน์จริง จากนั้น AI จะสร้าง HTML และ CSS จากโครงสร้างและสไตล์จริงของ frame นั้น ไม่ใช่การเดาแบบทั่วไปว่าดีไซน์ "น่าจะ" หน้าตาเป็นอย่างไร
3. เลือก React เป็นฟอร์แมตของ output ฟอร์แมตของ output เลือกได้ในแต่ละครั้งที่ export ได้แก่ Vanilla HTML/CSS, Tailwind CSS หรือ React component เมื่อเลือก React จะได้ component ที่สร้างจากโครงสร้างเดียวกัน พร้อมนำไปวางในโค้ดเบสที่มีอยู่แล้วได้เลย ไม่ใช่แค่หน้าเว็บแบบ static (ถ้าต้องการ Vanilla HTML/CSS แทน ดูได้ที่ คู่มือทั่วไปเรื่อง Figma to HTML)
4. ปรับแต่งก่อน export แพ็กเกจสุดท้าย ก่อน generate โค้ดสุดท้าย มี in-app editor ให้ปรับ content, ฟอนต์ และ layout แบบ visual ได้ และทุกครั้งที่ export จะได้ AI quality score อัตโนมัติ ทำให้รู้ได้ทันทีว่า output พร้อมใช้งานจริงหรือยัง หรือควรปรับอีกรอบ
Auto Layout กลายเป็น Flexbox ใน component ได้อย่างไร
ส่วนที่ช่วยลดงานทำมือได้มากที่สุดในเวิร์กโฟลว์นี้คือเรื่อง layout คุณสมบัติ Auto Layout ของ Figma ไม่ว่าจะเป็น direction, gap, padding และ alignment จะถูก map ไปเป็นโครงสร้าง CSS Flexbox ที่เทียบเท่ากันโดยอัตโนมัติ และการ map นี้ถูกนำไปใช้ใน React component ที่ generate ออกมาด้วยเช่นกัน ไม่ใช่แค่ในหน้า HTML แบบ static เท่านั้น แถวขององค์ประกอบที่ใช้ Auto Layout พร้อมกำหนด gap จะกลายเป็น flex container ที่มี gap, padding และ alignment ถูกใส่ไว้ใน style ของ component เรียบร้อยแล้ว ไม่ต้องมานั่งกะด้วยสายตาเอง Auto Layout frame ที่ซ้อนกันก็ถูก map เป็น flex container ที่ซ้อนกันด้วยหลักการเดียวกัน ซึ่งครอบคลุม layout ส่วนใหญ่อย่างการ์ด รายการ และเมนูนำทาง ส่วนดีไซน์บางส่วนที่เป็นโครงสร้างแบบ grid จริง ๆ ก็ยังเหมาะกับ CSS Grid มากกว่า หากอยากรู้รายละเอียดว่าการ map นี้ทำงานอย่างไร ลองดูว่า Auto Layout ถูก map เป็น Flexbox ได้อย่างไร
ทำให้พฤติกรรม responsive ใช้งานได้จริง
พฤติกรรม responsive คือจุดที่ output จาก Figma-to-React ควรได้รับการตรวจสอบอย่างละเอียดที่สุด ไม่ใช่น้อยที่สุด sizing mode ของ Auto Layout อย่าง Hug, Fill, Fixed และ resizing constraint ของ frame คือสัญญาณจริงที่บอกว่า component ควรมีพฤติกรรมอย่างไรที่ความกว้างต่าง ๆ container ที่เป็น Fill คือสัญญาณว่าควรใช้ความกว้างแบบยืดหยุ่นหรือ flex: 1 ใน CSS ไม่ใช่ค่าพิกเซลตายตัว แต่ทั้ง Figma และเครื่องมือแปลงใด ๆ ก็ไม่สามารถ generate โค้ด React ที่ responsive ได้สมบูรณ์แบบด้วยตัวเองทั้งหมด breakpoint ที่เจาะจง วิธีที่ layout ควร reflow บนมือถือ และว่า component จำเป็นต้องจัดวางต่างออกไปเมื่อต่ำกว่าความกว้างหนึ่ง ๆ หรือไม่ ยังคงเป็นการตัดสินใจที่ต้องอาศัยคนตีความ โดยใช้สัญญาณเหล่านั้นเป็นข้อมูลประกอบ ไม่ใช่สิ่งที่มาแทนที่การตัดสินใจนั้นได้ ในทางปฏิบัติ หมายความว่าควรตรวจสอบ component ที่ generate มา (หรือสร้างเอง) ที่ breakpoint จริงสักสองสามจุด แทนที่จะเชื่อว่า max-width หรือ media query ถูกส่งต่อมาอย่างถูกต้อง และมองว่า Figma frame ที่ออกแบบมาสำหรับ desktop เป็นแค่จุดเริ่มต้นของพฤติกรรมบนมือถือ ไม่ใช่คำตอบสุดท้าย
รีวิว component ก่อนนำไปใส่ในแอปของคุณ
โค้ดที่ generate มาช่วยทำงานส่วนใหญ่ให้แล้ว แต่ก่อนจะ merge เข้ากับแอปที่มีอยู่ ก็ยังคุ้มค่าที่จะรีวิวอีกรอบ
- ตรวจสอบขอบเขตของ component ดูว่า component ที่ generate มาถูกแบ่งตรงจุดที่คุณจะแบ่งเองตามธรรมชาติในโค้ดเบสของคุณหรือไม่ เมื่อเข้าไปอยู่ในโปรเจกต์แล้วก็ยังแบ่งย่อยเพิ่มได้เสมอ ปุ่ม การ์ด เมนูนำทาง และ UI ที่ซ้ำ ๆ อื่น ๆ มักเป็นขนาดที่เหมาะสมสำหรับหนึ่ง component อยู่แล้ว ส่วนการแยกย่อยลงไปทุกเลเยอร์มีแต่จะเพิ่มความซับซ้อนโดยไม่ได้ประโยชน์อะไร
- ดู markup ไม่ใช่แค่ผลลัพธ์ทางสายตา output จะเน้น semantic HTML ที่มีลำดับ heading ถูกต้อง มี element
<button>และ<a>จริง ๆ สำหรับส่วนที่ interactive และมีalttext บนรูปภาพ แทนที่จะเป็น<div>ซ้อนกันลึก ๆ ซึ่งควรตรวจดูสักหน่อย เพราะ search engine, screen reader และการนำทางด้วยคีย์บอร์ดก็อาศัยจุดนี้เหมือนกัน ความคล้ายกันทางสายตากับ Figma frame ไม่ได้การันตีสิ่งเหล่านี้เสมอไป ดูรายละเอียดแบบครบถ้วนได้ที่ จาก Figma สู่ HTML ที่เข้าถึงได้: คู่มือปฏิบัติจริง - ตรวจ content และข้อความอีกครั้ง สิ่งที่ดีไซน์เปลี่ยนไปหลัง export มักแก้ได้ง่ายที่สุดใน in-app editor ก่อนที่จะดึงโค้ดสุดท้ายเข้าโปรเจกต์
- เชื่อมต่อ data และ state ของคุณเอง component ที่ generate มาดูแลเรื่องโครงสร้างและสไตล์ให้ ส่วนการเชื่อมกับ props จริง ข้อมูลจาก API หรือ state ของแอป ยังคงเป็นหน้าที่ของคุณ
ลองใช้กับดีไซน์ของคุณเอง
ทั้งหมดนี้ไม่ได้มาแทนที่วิจารณญาณของนักพัฒนาว่า component ควรทำงานอย่างไร แต่เป็นการตัดงานเชิงกลไกในการแปลงการตัดสินใจเรื่อง layout ที่ตกลงแล้วให้เป็น JSX และ CSS ออกไป เพื่อให้วิจารณญาณนั้นถูกใช้กับส่วนที่ต้องการจริง ๆ MarkupGen มี free plan ให้เริ่มต้นใช้งานฟรีได้ แล้วค่อยอัปเกรดเมื่อจำเป็น ไม่มีค่าใช้จ่ายแอบแฝง ยกเลิกได้ทุกเมื่อ หากอยากลองกระบวนการทั้ง 4 ขั้นตอนกับดีไซน์จริง ลองใช้กับไฟล์ Figma ของคุณเอง มีคำถามติดต่อได้ที่ support@markupgen.com
FAQ
แปลงดีไซน์ Figma ให้เป็น React ได้อย่างไร? ตรวจสอบโครงสร้างและการตั้งค่า Auto Layout ของ frame ตัดสินใจว่าส่วนที่ซ้ำกันจุดไหนควรกลายเป็น component ที่นำกลับมาใช้ซ้ำได้ พร้อม props สำหรับ variant ของมัน จากนั้นสร้าง (หรือ generate) React component และ CSS จากโครงสร้างนั้น โดย Auto Layout จะถูก map เป็น Flexbox และ resizing constraint จะเป็นข้อมูลประกอบสำหรับพฤติกรรม responsive เครื่องมืออย่าง MarkupGen สามารถ generate ร่างแรกนี้ให้อัตโนมัติได้ แต่ไม่ว่าจะทำแบบไหน การรีวิวเรื่องขอบเขตของ component การเข้าถึงได้ และข้อมูลจริง ก็ยังคุ้มค่าที่จะทำก่อนนำไปใช้จริง
ดีไซน์ Figma เปลี่ยนเป็น React component ที่นำกลับมาใช้ซ้ำได้ไหม? ได้ แต่ไม่ใช่ทุกเลเยอร์ที่ควรกลายเป็น component UI ที่ซ้ำกัน เช่น ปุ่ม การ์ด รายการเมนู หรือฟิลด์ในฟอร์ม เป็นตัวเลือกที่ดี ส่วนเลเยอร์ที่มีอยู่แค่จุดเดียวในดีไซน์มักไม่จำเป็นต้องมี component ของตัวเอง
Figma Auto Layout ถูก map เป็น React และ CSS ได้อย่างไร?
ส่วนใหญ่ถูก map เป็น CSS Flexbox โดย direction กลายเป็น flex-direction, gap กลายเป็น gap, padding กลายเป็น padding และ alignment กลายเป็น justify-content/align-items ซึ่งถูกนำไปใช้ในแนวทาง CSS แบบใดก็ตามที่ React component นั้นใช้อยู่
ทำอย่างไรให้ output จาก Figma-to-React responsive? เริ่มจาก sizing mode และ constraint ของ Auto Layout ใน frame เพราะเป็นสัญญาณของพฤติกรรมการปรับขนาดที่ตั้งใจไว้ แต่ควรวางแผนเพิ่มหรือปรับ breakpoint และ layout เฉพาะสำหรับมือถือด้วยตัวเอง เพราะทั้ง Figma และเครื่องมือแปลงใด ๆ ก็ไม่สามารถอนุมานพฤติกรรม responsive ที่ไม่ได้ถูกแสดงไว้ในดีไซน์ได้อย่างสมบูรณ์
ทุก Figma component ควรกลายเป็น React component หรือไม่? ไม่จำเป็น การแยก component ทุกอย่างที่ไฟล์ดีไซน์บังเอิญตั้งชื่อว่า "component" มักเพิ่มความซับซ้อนโดยไม่ได้ทำให้โค้ดดูแลรักษาง่ายขึ้น รูปแบบที่นำกลับมาใช้ซ้ำได้และซ้ำกันจริง ๆ นั้นคุ้มค่าที่จะแยก ส่วนเลเยอร์ที่มีครั้งเดียวมักไม่คุ้ม
อยากข้ามไปแปลงดีไซน์ของคุณเองเลยใช่ไหม แปลงดีไซน์ Figma ของคุณเป็น React ด้วย MarkupGen →
