การข้าม @Stable และ @Immutable
ทำเครื่องหมายชนิดเพื่อให้ Compose ข้ามงานได้
การข้าม @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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พารามิเตอร์เสถียรกับไม่เสถียร
- การข้าม @Stable และ @Immutable
- เลื่อนการอ่านสถานะออกไป
- ตัวตรวจสอบเลย์เอาต์และจำนวนการประกอบใหม่