เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
คอลัมน์ JS ใช้สำหรับ "คอลัมน์ที่กำหนดเอง" ในตาราง โดยจะเรนเดอร์เนื้อหาของแต่ละเซลล์ในแต่ละแถวด้วย JavaScript ครับ/ค่ะ คอลัมน์นี้ไม่ได้ผูกกับฟิลด์ใดฟิลด์หนึ่งโดยเฉพาะ จึงเหมาะสำหรับสถานการณ์ต่างๆ เช่น การสร้างคอลัมน์จากข้อมูลที่มีอยู่ (derived columns), การแสดงผลข้อมูลแบบรวมจากหลายฟิลด์, การแสดงป้ายสถานะ (status badges), ปุ่มสำหรับดำเนินการ, หรือการสรุปข้อมูลจากแหล่งข้อมูลระยะไกล เป็นต้น ครับ/ค่ะ

เมื่อเรนเดอร์แต่ละเซลล์ คอลัมน์ JS จะมี API สำหรับบริบท (Context API) ดังต่อไปนี้ให้ใช้งานครับ/ค่ะ:
ctx.element: คอนเทนเนอร์ DOM ของเซลล์ปัจจุบัน (ElementProxy) ซึ่งรองรับ innerHTML, querySelector, addEventListener และอื่นๆ ครับ/ค่ะctx.record: ออบเจกต์บันทึกข้อมูลของแถวปัจจุบัน (อ่านอย่างเดียว) ครับ/ค่ะctx.recordIndex: ดัชนีของแถวภายในหน้าปัจจุบัน (เริ่มต้นจาก 0 และอาจได้รับผลกระทบจากการแบ่งหน้า) ครับ/ค่ะctx.collection: เมตาอินฟอร์เมชันของ คอลเลกชัน ที่ผูกกับตาราง (อ่านอย่างเดียว) ครับ/ค่ะctx.requireAsync(url): โหลดไลบรารี AMD/UMD แบบอะซิงโครนัสตาม URL ครับ/ค่ะctx.importAsync(url): อิมพอร์ตโมดูล ESM แบบไดนามิกตาม URL ครับ/ค่ะctx.openView(options): เปิดวิว (View) ที่กำหนดค่าไว้ (เช่น ป๊อปอัป/ลิ้นชัก/หน้า) ครับ/ค่ะctx.i18n.t() / ctx.t(): สำหรับการทำ Internationalization (การรองรับหลายภาษา) ครับ/ค่ะctx.onRefReady(ctx.ref, cb): เรนเดอร์หลังจากคอนเทนเนอร์พร้อมใช้งานครับ/ค่ะctx.libs.React / ctx.libs.ReactDOM / ctx.libs.antd / ctx.libs.antdIcons / ctx.libs.dayjs: ไลบรารีทั่วไปที่มาพร้อมกับระบบ เช่น React, ReactDOM, Ant Design, ไอคอน Ant Design และ dayjs สำหรับการเรนเดอร์ JSX และการจัดการเวลาครับ/ค่ะ (ส่วน ctx.React / ctx.ReactDOM / ctx.antd ยังคงมีไว้เพื่อความเข้ากันได้)ctx.render(vnode): เรนเดอร์ React element/HTML/DOM ไปยังคอนเทนเนอร์เริ่มต้น ctx.element (เซลล์ปัจจุบัน) ครับ/ค่ะ การเรนเดอร์หลายครั้งจะใช้ Root เดิมซ้ำ และจะเขียนทับเนื้อหาที่มีอยู่ในคอนเทนเนอร์ครับ/ค่ะตัวแก้ไขสคริปต์สำหรับคอลัมน์ JS รองรับการเน้นไวยากรณ์ (syntax highlighting), การแจ้งเตือนข้อผิดพลาด และมีโค้ดสนิปเปต (Snippets) ในตัวครับ/ค่ะ
Snippets: เปิดรายการโค้ดสนิปเปตในตัว คุณสามารถค้นหาและแทรกโค้ดเหล่านั้นไปยังตำแหน่งเคอร์เซอร์ปัจจุบันได้ด้วยคลิกเดียวครับ/ค่ะRun: รันโค้ดปัจจุบันได้โดยตรงครับ/ค่ะ บันทึกการทำงานจะแสดงในแผง Logs ด้านล่าง ซึ่งรองรับ console.log/info/warn/error และการเน้นข้อผิดพลาดเพื่อระบุตำแหน่งครับ/ค่ะ
คุณยังสามารถใช้ AI Employee เพื่อช่วยสร้างโค้ดได้ด้วยครับ/ค่ะ:
if (!lib) return;)class หรือ [name=...] เป็นหลัก และหลีกเลี่ยงการใช้ id แบบตายตัว เพื่อป้องกัน id ซ้ำกันในหลายบล็อกหรือป๊อปอัปครับ/ค่ะ