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

ในเกม Redux สิ่งที่เรียกว่า วัตถุที่ไม่เปลี่ยนรูป คือสิ่งสำคัญ

วัตถุที่ไม่เปลี่ยนรูปคืออะไร

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

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

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

เหตุผลในการใช้วัตถุที่ไม่เปลี่ยนรูปใน redux?

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

ใน Redux สถานะจะแสดงด้วยวัตถุเดียวที่ไม่เปลี่ยนรูปที่เรียกว่าแผนผังสถานะ เมื่อมีการส่งการดำเนินการเพื่ออัปเดตสถานะ ฟังก์ชันตัวลดจะส่งกลับออบเจ็กต์สถานะใหม่ที่อิงตามออบเจ็กต์สถานะก่อนหน้าและการดำเนินการ

ด้วยการใช้วัตถุที่ไม่เปลี่ยนรูป Redux ช่วยให้มั่นใจได้ว่าแผนผังสถานะจะไม่ถูกแก้ไขโดยตรง แต่จะมีการสร้างออบเจ็กต์สถานะใหม่อยู่เสมอ ซึ่งสามารถเปรียบเทียบกับสถานะก่อนหน้าเพื่อพิจารณาว่ามีการเปลี่ยนแปลงใดๆ เกิดขึ้นหรือไม่ ทำให้ง่ายต่อการติดตามการเปลี่ยนแปลงสถานะ แก้ไขปัญหา และใช้ฟังก์ชันการเลิกทำ/ทำซ้ำ

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

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