0Pricing
React Academy · บทเรียน

การสร้าง Zustand Store แรกของคุณ

กำหนด store ด้วย create() เพิ่มส่วนย่อยของสถานะและแอ็กชัน แล้วเรียกใช้ด้วย useStore

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

ยินดีต้อนรับ

ในบทเรียนนี้ คุณจะสร้างสโตร์ Zustand แรกด้วย create() กำหนดส่วนย่อยของสถานะและแอ็กชัน แล้วนำสโตร์ไปใช้ในคอมโพเนนต์ React

Zustand คืออะไร

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

การติดตั้ง

ติดตั้ง Zustand โดยไม่มีการพึ่งพาแพ็กเกจร่วม
npm install zustand

การสร้างสโตร์

เรียก create() พร้อมฟังก์ชันที่ส่งคืนสถานะตั้งต้นและแอ็กชัน ฟังก์ชันนี้จะได้รับตัวช่วย `set` สำหรับอัปเดตสถานะ
import { create } from 'zustand';

const useCounterStore = create((set) => ({
  count: 0,
  increment: () => set(state => ({ count: state.count + 1 })),
  decrement: () => set(state => ({ count: state.count - 1 })),
  reset: () => set({ count: 0 }),
}));

การใช้สโตร์ในคอมโพเนนต์

เรียกฮุกของสโตร์ในคอมโพเนนต์ใดก็ได้เพื่อเข้าถึงสถานะและแอ็กชัน ไม่จำเป็นต้องครอบด้วย Provider
function Counter() {
  const count = useCounterStore(state => state.count);
  const increment = useCounterStore(state => state.increment);
  return (
    <>
      <p>{count}</p>
      <button onClick={increment}>+1</button>
    </>
  );
}

ไวยากรณ์ของตัวเลือก

ส่งฟังก์ชันตัวเลือกให้ฮุกของสโตร์เพื่อสมัครรับข้อมูลเฉพาะส่วนย่อยที่ต้องการ คอมโพเนนต์จะเรนเดอร์ใหม่เฉพาะเมื่อค่าที่เลือกเปลี่ยนแปลง
const count = useCounterStore(s => s.count);
const reset = useCounterStore(s => s.reset);
// Only re-renders when count changes, not the whole store

การอัปเดตสถานะด้วย set

ฟังก์ชัน `set` จะผสานค่าใหม่เข้ากับสโตร์แบบตื้น คุณสามารถส่งอ็อบเจ็กต์หรือฟังก์ชันที่รับสถานะปัจจุบันและส่งคืนการอัปเดตบางส่วนได้
set({ count: 0 }) // direct set
set(state => ({ count: state.count + 1 })) // functional update

แอ็กชันแบบอะซิงโครนัส

แอ็กชันสามารถทำงานแบบอะซิงโครนัสได้ ให้เรียก set หลังจากรอข้อมูลแล้ว ไม่จำเป็นต้องใช้มิดเดิลแวร์ เพียงเขียนฟังก์ชันอะซิงโครนัสตามปกติ
const useUserStore = create((set) => ({
  user: null,
  fetchUser: async (id) => {
    const data = await fetch('/api/user/' + id).then(r => r.json());
    set({ user: data });
  },
}));

การอัปเดตสถานะที่ซ้อนกัน

สำหรับอ็อบเจ็กต์ที่ซ้อนกัน ให้กระจายระดับภายนอกด้วยตนเอง หรือใช้มิดเดิลแวร์ immer สำหรับการเปลี่ยนแปลงข้อมูลระดับลึก โดยค่าเริ่มต้น set จะผสานเฉพาะคีย์ระดับบนสุด
set(state => ({
  user: { ...state.user, name: 'Alice' }
}));

การอ่านสโตร์นอก React

เข้าถึงสถานะของสโตร์นอกคอมโพเนนต์ด้วย getState() และสมัครรับการเปลี่ยนแปลงด้วย subscribe() ซึ่งมีประโยชน์สำหรับการทดสอบและโค้ดที่ไม่ใช่ React
const count = useCounterStore.getState().count;
useCounterStore.subscribe(state => console.log(state.count));

ตรวจสอบความเข้าใจ

ในสโตร์ของ Zustand ฟังก์ชัน set ทำหน้าที่อะไร

สรุปทบทวน

สร้างสโตร์ Zustand ด้วย create((set) => ({ state, actions })) ใช้ไวยากรณ์ตัวเลือกในคอมโพเนนต์เพื่อสมัครรับข้อมูลจากส่วนย่อยต่าง ๆ แอ็กชันเรียก set() เพื่ออัปเดตสถานะ และทำงานแบบอะซิงโครนัสหรือนอก React ได้ด้วย getState()

บทเรียนถัดไป

บทเรียนถัดไป: **ตัวเลือกและการป้องกันการเรนเดอร์ใหม่โดยไม่จำเป็น** — คุณจะดึงส่วนย่อยของสถานะที่ต้องการออกมา เพื่อให้คอมโพเนนต์เรนเดอร์ใหม่เฉพาะเมื่อจำเป็น

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

บทเรียน “การสร้าง Zustand Store แรกของคุณ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การสร้าง Zustand Store แรกของคุณ”

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

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

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

บทเรียน “การสร้าง Zustand Store แรกของคุณ” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การสร้าง Zustand Store แรกของคุณ
  2. Selector และการป้องกันการเรนเดอร์ซ้ำโดยไม่จำเป็น
  3. การคงสถานะด้วยมิดเดิลแวร์ Persist
  4. Zustand DevTools และการทดสอบ Store
← กลับไปที่ React Academy