Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Asynkronisen Datan Käsittely Sovelluksessa | Todellisen Sovelluksen Rakentaminen Redux Toolkitilla
Tilanhallinta Redux Toolkitilla Reactissa

Asynkronisen Datan Käsittely Sovelluksessa

Pyyhkäise näyttääksesi valikon

Nyt lisäät sovelluksen ulkopuolelta tulevaa dataa. Tyhjän listan sijaan lataat tehtävät API-rajapinnasta.

Asynkronisen toiminnon luominen

Päivitä slice ja lisää createAsyncThunk:

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';

export const fetchTasks = createAsyncThunk('tasks/fetchTasks', async () => {
  const response = await fetch('https://jsonplaceholder.typicode.com/todos?_limit=5');

  if (!response.ok) {
    throw new Error('Failed to fetch tasks');
  }

  return response.json();
});

Asynkronisten tilojen käsittely

Päivitä slice seuraamaan lataus- ja virhetiloja:

const initialState = {
  items: [],
  status: 'idle',
  error: null
};

Lisää extraReducers:

extraReducers: (builder) => {
  builder
    .addCase(fetchTasks.pending, (state) => {
      state.status = 'loading';
    })
    .addCase(fetchTasks.fulfilled, (state, action) => {
      state.status = 'succeeded';
      state.items = action.payload;
    })
    .addCase(fetchTasks.rejected, (state, action) => {
      state.status = 'failed';
      state.error = action.error.message;
    });
}

Datan hakemisen käynnistäminen

Toiminnon lähettäminen komponentin latautuessa:

import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { fetchTasks } from '../features/tasks/tasksSlice';

function TaskList() {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchTasks());
  }, [dispatch]);
}

Sovellukseen on lisätty asynkroninen logiikka. Tehtävät ladataan nyt API-rajapinnasta, ja tila seuraa latauksen, onnistumisen ja virheen tiloja.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 7. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Asynkronisen Datan Käsittely Sovelluksessa

Nyt lisäät sovelluksen ulkopuolelta tulevaa dataa. Tyhjän listan sijaan lataat tehtävät API-rajapinnasta.

Asynkronisen toiminnon luominen

Päivitä slice ja lisää createAsyncThunk:

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';

export const fetchTasks = createAsyncThunk('tasks/fetchTasks', async () => {
  const response = await fetch('https://jsonplaceholder.typicode.com/todos?_limit=5');

  if (!response.ok) {
    throw new Error('Failed to fetch tasks');
  }

  return response.json();
});

Asynkronisten tilojen käsittely

Päivitä slice seuraamaan lataus- ja virhetiloja:

const initialState = {
  items: [],
  status: 'idle',
  error: null
};

Lisää extraReducers:

extraReducers: (builder) => {
  builder
    .addCase(fetchTasks.pending, (state) => {
      state.status = 'loading';
    })
    .addCase(fetchTasks.fulfilled, (state, action) => {
      state.status = 'succeeded';
      state.items = action.payload;
    })
    .addCase(fetchTasks.rejected, (state, action) => {
      state.status = 'failed';
      state.error = action.error.message;
    });
}

Datan hakemisen käynnistäminen

Toiminnon lähettäminen komponentin latautuessa:

import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { fetchTasks } from '../features/tasks/tasksSlice';

function TaskList() {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchTasks());
  }, [dispatch]);
}

Sovellukseen on lisätty asynkroninen logiikka. Tehtävät ladataan nyt API-rajapinnasta, ja tila seuraa latauksen, onnistumisen ja virheen tiloja.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 7. Luku 4
some-alt