Jetpack Compose Academy · บทเรียน

การข้าม @Stable และ @Immutable

ทำเครื่องหมายชนิดเพื่อให้ Compose ข้ามงานได้

บทเรียน 2 จาก 413 ขั้นตอน

การข้าม @Stable และ @Immutable เป็นบทเรียน Jetpack Compose Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Jetpack Compose Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

เมื่อจำเป็นต้องใช้คำอธิบายประกอบ

บางครั้งชนิดข้อมูลปลอดภัยจริง แต่ Compose ไม่สามารถพิสูจน์ได้ คำอธิบายประกอบช่วยให้คุณ รับรองความเสถียร เพื่อให้การข้ามกลับมาทำงานอีกครั้ง

คำสัญญาของ @Immutable

@Immutable บอก Compose ว่า เมื่อสร้างอินสแตนซ์แล้ว คุณสมบัติทั้งหมดจะไม่เปลี่ยนแปลงอีก นี่คือการรับประกันความเสถียรระดับสูงสุด

@Immutable
data class Theme(val primary: Long, val radius: Int)

ควรใช้ @Immutable เมื่อใด

เลือกใช้ @Immutable กับข้อมูลลักษณะการกำหนดค่า เช่น ธีม รูปแบบ และออบเจ็กต์ค่า ที่สร้างขึ้นครั้งเดียวและไม่เปลี่ยนแปลงหลังการสร้าง

คำสัญญาของ @Stable

@Stable มีข้อกำหนดผ่อนปรนกว่า: คุณสมบัติอาจเปลี่ยนแปลงได้ แต่เมื่อเปลี่ยน Compose จะได้รับการแจ้งผ่านสถานะของ Compose และ equals() ต้องยังคงให้ผลสอดคล้องกัน

@Stable สำหรับชนิดข้อมูลที่สังเกตการเปลี่ยนแปลงได้

ใช้ @Stable กับคลาสที่ฟิลด์เปลี่ยนแปลงได้อาศัย mutableStateOf เพื่อให้ Compose ติดตามการเปลี่ยนแปลงทุกครั้งได้อย่างถูกต้อง

@Stable
class FormState { var name by mutableStateOf("") }

ผิดคำสัญญา Compose ก็ผิดพลาด

คำอธิบายประกอบเหล่านี้คือ สัญญา หากระบุว่าชนิดข้อมูลเสถียรแต่แอบเปลี่ยนแปลงโดยไม่แจ้ง ระบบ UI จะแสดงข้อมูลเก่าและเกิดข้อผิดพลาดตามมา

ตัวช่วยคอลเลกชันที่เปลี่ยนแปลงไม่ได้

แทนที่จะส่ง List ให้ส่ง ImmutableList จาก kotlinx.collections.immutable Compose จะมองว่าชนิดนี้เสถียร ดังนั้น Composable ที่แสดงรายการจึงสามารถถูกข้ามได้

fun Tags(items: ImmutableList<String>) { }

ฟังก์ชันยังคงเสถียร

พารามิเตอร์ลัมบ์ดา เสถียรอยู่แล้ว แต่โปรดจำไว้ว่าลัมบ์ดาที่จับค่าซึ่งเปลี่ยนแปลงได้จะเป็นอินสแตนซ์ใหม่ทุกครั้งที่จัดองค์ประกอบใหม่

ระบุทั้งคลาสเพียงครั้งเดียว

คำอธิบายประกอบหนึ่งรายการบน คลาส จะครอบคลุมการใช้ชนิดข้อมูลนั้นเป็นพารามิเตอร์ทั้งหมด คุณไม่ต้องใส่คำอธิบายประกอบในทุกจุดที่เรียกใช้

คำอธิบายประกอบเป็นทางเลือกสุดท้าย

ให้เลือกใช้ความ ไม่เปลี่ยนแปลงจริงด้วย val ก่อน ใส่คำอธิบายประกอบเฉพาะเมื่อคอมไพเลอร์ไม่สามารถอนุมานความเสถียรได้ด้วยตนเองจริง ๆ

ตรวจสอบก่อนแล้วจึงเชื่อถือ

หลังใส่คำอธิบายประกอบแล้ว ให้ตรวจสอบว่า Composable ถูกข้ามจริง คำสัญญาที่ผิดพลาดยิ่งแย่กว่าการไม่มีคำสัญญาเลย

ตรวจสอบอย่างรวดเร็ว

เลือกคำอธิบายประกอบที่ถูกต้อง

สรุป: ให้คำสัญญาอย่างรอบคอบ

ใช้ @Immutable กับข้อมูลที่ไม่เปลี่ยนแปลงเลย และใช้ @Stable กับข้อมูลที่เปลี่ยนแปลงได้ซึ่งมีสถานะรองรับ จงปฏิบัติตามสัญญา มิฉะนั้นระบบ UI จะแสดงข้อมูลไม่ตรงความจริง ✅

เริ่มต้นได้ฟรี

เรียนรู้ Kotlin ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การข้าม @Stable และ @Immutable” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การข้าม @Stable และ @Immutable” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Jetpack Compose Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การข้าม @Stable และ @Immutable”

ทำเครื่องหมายชนิดเพื่อให้ Compose ข้ามงานได้ คุณปฏิบัติ Jetpack Compose Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Jetpack Compose Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Jetpack Compose Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การข้าม @Stable และ @Immutable” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Jetpack Compose Academy นี้ได้ไหม

ได้ บทเรียน Jetpack Compose Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พารามิเตอร์เสถียรกับไม่เสถียร
  2. การข้าม @Stable และ @Immutable
  3. เลื่อนการอ่านสถานะออกไป
  4. ตัวตรวจสอบเลย์เอาต์และจำนวนการประกอบใหม่
← กลับไปที่ Jetpack Compose Academy