การอ่านและเขียน localStorage ใน React
เข้าถึง localStorage อย่างปลอดภัยใน React hooks รองรับสภาพแวดล้อม SSR และแปลงสถานะที่ซับซ้อนเป็นข้อมูลสำหรับจัดเก็บ
การอ่านและเขียน localStorage ใน React เป็นบทเรียน React Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน React Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
ส่วนติดต่อการเขียนโปรแกรมของ localStorage
localStorage เป็นที่เก็บข้อมูลในเบราว์เซอร์ที่มีมาให้ในตัว พร้อมเมธอดหลักสี่รายการ ได้แก่ setItem(key, value) getItem(key) removeItem(key) และ clear() ข้อมูลจะคงอยู่แม้โหลดหน้าเว็บใหม่หรือเปิดเบราว์เซอร์ขึ้นมาอีกครั้ง
สิ่งนี้อยู่บนออบเจ็กต์หน้าต่าง window และมีขอบเขตแยกตามต้นทาง กล่าวคือแต่ละโดเมนจะมีพื้นที่จัดเก็บที่แยกจากกัน
ทำงานพร้อมกันและขัดขวางการแสดงผล
การเรียกใช้ localStorage ทุกครั้งทำงานแบบพร้อมกันบนเธรดหลัก การอ่านหรือเขียนข้อมูลปริมาณมากอาจขัดขวางการแสดงผลและทำให้ส่วนติดต่อผู้ใช้รู้สึกกระตุก
ด้วยเหตุนี้ ให้เก็บค่าไว้ในขนาดเล็ก และหลีกเลี่ยงการเขียนข้อมูลทุกครั้งที่กดแป้นพิมพ์หรือเลื่อนหน้า
จัดเก็บได้เฉพาะข้อความ
localStorage จัดเก็บได้เฉพาะข้อความ หากต้องการเก็บออบเจ็กต์หรืออาร์เรย์ คุณต้องแปลงข้อมูลเป็นข้อความก่อนด้วย JSON.stringify(value) แล้วจึงเรียกใช้ setItem
หากคุณจัดเก็บค่าที่ไม่ใช่ข้อความโดยตรง ระบบจะแปลงค่านั้นเป็นข้อความ ดังนั้นออบเจ็กต์จะกลายเป็นข้อความไร้ประโยชน์อย่าง [object Object]
แยกวิเคราะห์พร้อมจัดการข้อผิดพลาด
เมื่ออ่านข้อมูล คุณจะเรียกใช้ JSON.parse(localStorage.getItem(key)) แต่การแยกวิเคราะห์อาจทำให้เกิดข้อผิดพลาดได้ หากข้อความที่จัดเก็บเสียหายหรือถูกเขียนโดยแหล่งอื่น
ครอบการแยกวิเคราะห์ไว้ใน try/catch และใช้ค่าเริ่มต้นเป็นทางเลือกสำรอง เพื่อไม่ให้ข้อมูลที่ผิดพลาดทำให้คอมโพเนนต์หยุดทำงาน
ตรวจสอบความพร้อมใช้งาน
localStorage ไม่สามารถใช้งานได้เสมอไป ระหว่างการเรนเดอร์ฝั่งเซิร์ฟเวอร์จะไม่มี window และโหมดการเรียกดูแบบส่วนตัวบางโหมดอาจทำให้เกิดข้อผิดพลาดเมื่อเขียนข้อมูล ให้ป้องกันการเข้าถึงด้วยการตรวจสอบความสามารถ
การทดสอบที่ปลอดภัยคือใช้ try/catch เพื่อสร้างและลบคีย์ชั่วคราว แล้วคืนค่าเป็นเท็จหากเกิดข้อผิดพลาด
ขีดจำกัดความจุประมาณ 5 MB
เบราว์เซอร์ส่วนใหญ่จำกัด localStorage ไว้ที่ประมาณห้าเมกะไบต์ต่อออริจิน การใช้เกินขีดจำกัดนี้จะทำให้เกิด QuotaExceededError ขณะเขียนข้อมูล
จึงเหมาะกับข้อมูลขนาดเล็ก แต่ไม่เหมาะกับรูปภาพ ชุดข้อมูลขนาดใหญ่ หรือการตอบกลับจาก API ที่แคชไว้
ข้อมูลที่เหมาะสม
ตัวเลือกที่เหมาะสมคือข้อมูลส่วนเล็ก ๆ ของส่วนติดต่อผู้ใช้และสถานะผู้ใช้ที่ไม่ละเอียดอ่อน เช่น ค่ากำหนดธีม สถานะการยุบแถบด้านข้าง ตัวกรองที่ใช้ล่าสุด แบนเนอร์ที่ปิดไป และแบบร่างฟอร์มที่ยังไม่ได้บันทึก
ค่าเหล่านี้เป็นค่าที่คุณต้องการให้คงอยู่หลังโหลดใหม่ แต่ไม่จำเป็นต้องส่งคำขอไป-กลับเซิร์ฟเวอร์
ข้อมูลที่ไม่เหมาะสม
หลีกเลี่ยงการจัดเก็บข้อมูลลับ เช่น โทเค็นหรือรหัสผ่าน เนื่องจากสคริปต์ใด ๆ ในหน้าเว็บสามารถอ่าน localStorage ได้ ทำให้ข้อมูลเสี่ยงต่อ XSS นอกจากนี้ควรหลีกเลี่ยงออบเจ็กต์ขนาดใหญ่และสถานะหลักจากเซิร์ฟเวอร์
ข้อมูลการยืนยันตัวตนที่ละเอียดอ่อนควรอยู่ในคุกกี้ httpOnly ส่วนข้อมูลที่เป็นแหล่งอ้างอิงหลักควรอยู่บนเซิร์ฟเวอร์
localStorage เทียบกับ sessionStorage
ทั้งสองใช้ API เดียวกัน แต่ sessionStorage จะถูกล้างเมื่อแท็บปิด และไม่ใช้ข้อมูลร่วมกันระหว่างแท็บ ส่วน localStorage จะคงอยู่โดยไม่มีกำหนด และใช้ร่วมกันในทุกแท็บของออริจินเดียวกัน
เลือก sessionStorage สำหรับข้อมูลอายุสั้นที่ใช้เฉพาะแท็บ และเลือก localStorage สำหรับค่ากำหนดที่ต้องการให้คงอยู่
เทียบกับคุกกี้และ IndexedDB
คุกกี้มีขนาดเล็กและถูกส่งไปกับทุกคำขอ HTTP จึงเหมาะกับการยืนยันตัวตน แต่สิ้นเปลืองแบนด์วิดท์หากใช้กับข้อมูลทั่วไป ส่วน IndexedDB เป็นฐานข้อมูลแบบอะซิงโครนัสสำหรับข้อมูลที่มีโครงสร้างขนาดใหญ่ ซึ่งรองรับข้อมูลได้มากกว่าขีดจำกัด 5 MB อย่างมาก
เลือกคุกกี้สำหรับข้อมูลยืนยันตัวตนที่เซิร์ฟเวอร์อ่าน เลือก localStorage สำหรับค่ากำหนดฝั่งไคลเอนต์ขนาดเล็ก และเลือก IndexedDB สำหรับข้อมูลขนาดใหญ่หรือซับซ้อน
รูปแบบการอ่าน/เขียนอย่างง่าย
ตัวช่วยขั้นต่ำจะเขียนข้อมูลด้วย localStorage.setItem(key, JSON.stringify(value)) และอ่านข้อมูลโดยใช้ try/catch ครอบ JSON.parse(localStorage.getItem(key)) พร้อมคืนค่าเริ่มต้นเมื่อเกิดข้อผิดพลาด
ตัวห่อหุ้มขนาดเล็กนี้รวมการแปลงข้อมูลเป็นสตริงและการจัดการข้อผิดพลาดไว้ในที่เดียว
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับชนิดข้อมูลของ localStorage
สรุปทบทวน
คุณได้เรียนรู้ API ของ localStorage ว่าทำงานแบบซิงโครนัส รับเฉพาะสตริง และมีขีดจำกัดเกือบ 5 MB รวมถึงวิธีแยกวิเคราะห์ข้อมูลอย่างปลอดภัยและตรวจสอบความพร้อมใช้งานสำหรับ SSR และโหมดส่วนตัว
คุณยังได้เปรียบเทียบ localStorage กับ sessionStorage คุกกี้ และ IndexedDB เพื่อเลือกพื้นที่จัดเก็บข้อมูลที่เหมาะสม
เรียนรู้ React ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 88
- บทเรียน
- 324
คำถามที่พบบ่อย
บทเรียน “การอ่านและเขียน localStorage ใน React” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอ่านและเขียน localStorage ใน React” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส React Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส React Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอ่านและเขียน localStorage ใน React”
เข้าถึง localStorage อย่างปลอดภัยใน React hooks รองรับสภาพแวดล้อม SSR และแปลงสถานะที่ซับซ้อนเป็นข้อมูลสำหรับจัดเก็บ คุณปฏิบัติ React Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน React Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน React Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การอ่านและเขียน localStorage ใน React” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน React Academy นี้ได้ไหม
ได้ บทเรียน React Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านและเขียน localStorage ใน React
- การซิงค์สถานะกับ localStorage
- การจัดการเหตุการณ์พื้นที่จัดเก็บระหว่างแท็บ
- sessionStorage, IndexedDB และการเลือก API ที่เหมาะสม