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

สไลซ์ Redux Toolkit และ createSlice

สร้างตรรกะ reducer ด้วย createSlice กำหนดแอ็กชัน และเชื่อมต่อกับ Redux store

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

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

ในบทเรียนนี้ คุณจะสร้างส่วนย่อยของ Redux Toolkit ด้วย createSlice กำหนดแอ็กชันและรีดิวเซอร์ไว้ในที่เดียว แล้วเชื่อมต่อเข้ากับสโตร์ Redux

Redux Toolkit คืออะไร

Redux Toolkit (RTK) เป็นแนวทางอย่างเป็นทางการและกำหนดแนวทางชัดเจนสำหรับการเขียน Redux โดยลดโค้ดซ้ำซ้อนด้วยการรวมรีดิวเซอร์ ตัวสร้างแอ็กชัน และสถานะตั้งต้นไว้ในการเรียก createSlice() ครั้งเดียว

การติดตั้ง

ติดตั้ง Redux Toolkit และ react-redux
npm install @reduxjs/toolkit react-redux

createSlice

เรียก createSlice() พร้อมชื่อ initialState และอ็อบเจ็กต์ reducers โดย RTK จะสร้างตัวสร้างแอ็กชันและชนิดของแอ็กชันให้โดยอัตโนมัติ
import { createSlice } from '@reduxjs/toolkit';

const counterSlice = createSlice({
  name: 'counter',
  initialState: { value: 0 },
  reducers: {
    increment: state => { state.value += 1; },
    decrement: state => { state.value -= 1; },
    incrementBy: (state, action) => { state.value += action.payload; },
  },
});

export const { increment, decrement, incrementBy } = counterSlice.actions;
export default counterSlice.reducer;

การทำงานภายในของ Immer

RTK ใช้ Immer ภายใน ดังนั้นคุณจึงสามารถเขียนตรรกะของ reducer ที่เปลี่ยนแปลงข้อมูลได้อย่างปลอดภัย (`state.value += 1`) โดย Immer จะแปลงโค้ดดังกล่าวเป็นการอัปเดตแบบไม่เปลี่ยนแปลงข้อมูลเบื้องหลัง

การกำหนดค่า Store

สร้าง Redux store ด้วย configureStore() แล้วเพิ่ม slice ของคุณเป็น reducer
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';

export const store = configureStore({
  reducer: {
    counter: counterReducer,
  },
});

การส่งต่อ Store

ครอบแอปพลิเคชันของคุณด้วย Provider จาก react-redux โดยส่ง store เข้าไป
import { Provider } from 'react-redux';
import { store } from './store';

createRoot(document.getElementById('root')).render(
  <Provider store={store}><App /></Provider>
);

useSelector และ useDispatch

อ่านสถานะด้วย useSelector และส่งแอ็กชันด้วย useDispatch สำหรับ TypeScript ให้ใช้เวอร์ชันที่มีชนิดข้อมูลกำกับ
import { useSelector, useDispatch } from 'react-redux';

function Counter() {
  const value = useSelector(state => state.counter.value);
  const dispatch = useDispatch();
  return (
    <>
      <p>{value}</p>
      <button onClick={() => dispatch(increment())}>+</button>
      <button onClick={() => dispatch(incrementBy(5))}>+5</button>
    </>
  );
}

ชนิดข้อมูลของ TypeScript

ส่งออกชนิดข้อมูล RootState และ AppDispatch จาก store.ts เพื่อสร้างฮุกที่มีชนิดข้อมูลครบถ้วน
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
// Then use typed hooks:
const value = useSelector((s: RootState) => s.counter.value);

Reducer เพิ่มเติม

ฟิลด์ extraReducers จัดการแอ็กชันจาก slice อื่นหรือ createAsyncThunk ให้ใช้รูปแบบ callback ของ builder เพื่อเพิ่มกรณีต่าง ๆ
extraReducers: (builder) => {
  builder.addCase(fetchUser.fulfilled, (state, action) => {
    state.user = action.payload;
  });
}

ตรวจสอบด่วน

เหตุใดคุณจึงสามารถเขียนโค้ดที่เปลี่ยนแปลงข้อมูล เช่น `state.value += 1` ภายใน reducer ของ Redux Toolkit ได้

สรุปทบทวน

createSlice รวม name, initialState และ reducers ไว้ในออบเจ็กต์เดียว Immer ช่วยให้เขียนโค้ด reducer ในรูปแบบที่ดูเหมือนเปลี่ยนแปลงข้อมูลได้ configureStore ประกอบ slice ต่าง ๆ เข้าด้วยกัน useSelector อ่านสถานะ ส่วน useDispatch ส่งแอ็กชัน

ขั้นถัดไป

บทเรียนถัดไป: **ตรรกะแบบอะซิงโครนัสด้วย createAsyncThunk** — คุณจะจัดการการเรียก API ใน Redux ด้วยชนิดแอ็กชันตามวงจรชีวิต

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

บทเรียน “สไลซ์ Redux Toolkit และ createSlice” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “สไลซ์ Redux Toolkit และ createSlice”

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

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

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

บทเรียน “สไลซ์ Redux Toolkit และ createSlice” ใช้เวลานานแค่ไหน

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

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

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

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

  1. สไลซ์ Redux Toolkit และ createSlice
  2. ตรรกะแบบอะซิงก์ด้วย createAsyncThunk
  3. RTK Query: เอนด์พอยต์และการแคชอัตโนมัติ
  4. การอัปเดตเชิงคาดการณ์และการทำให้แคชเป็นโมฆะ
← กลับไปที่ React Academy