Lógica assíncrona com createAsyncThunk
Trate chamadas de API no Redux com createAsyncThunk e o ciclo de vida pending/fulfilled/rejected.
Lógica assíncrona com createAsyncThunk é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
Boas-vindas
O que é createAsyncThunk?
Definindo uma ação assíncrona
import { createAsyncThunk } from '@reduxjs/toolkit';
export const fetchUser = createAsyncThunk(
'users/fetchById',
async (userId) => {
const response = await fetch('/api/users/' + userId);
return response.json(); // becomes action.payload on fulfilled
}
);Tratando em extraReducers
extraReducers: (builder) => {
builder
.addCase(fetchUser.pending, state => {
state.loading = true;
state.error = null;
})
.addCase(fetchUser.fulfilled, (state, action) => {
state.loading = false;
state.user = action.payload;
})
.addCase(fetchUser.rejected, (state, action) => {
state.loading = false;
state.error = action.error.message;
});
}Enviando a ação assíncrona
const dispatch = useDispatch();
useEffect(() => {
dispatch(fetchUser(userId));
}, [userId]);Acessando o estado na ação assíncrona
export const saveItem = createAsyncThunk(
'items/save',
async (item, { getState }) => {
const { auth } = getState();
return fetch('/api/items', {
method: 'POST',
headers: { Authorization: 'Bearer ' + auth.token },
body: JSON.stringify(item),
}).then(r => r.json());
}
);Tratando erros com rejectWithValue
export const fetchData = createAsyncThunk(
'data/fetch',
async (id, { rejectWithValue }) => {
const res = await fetch('/api/' + id);
if (!res.ok) return rejectWithValue({ status: res.status });
return res.json();
}
);
// In rejected case: action.payload.status is availableCancelando ações assíncronas
async (id, { signal }) => {
const res = await fetch('/api/' + id, { signal });
return res.json();
}Aguardando uma ação assíncrona enviada
const result = await dispatch(saveItem(data));
if (saveItem.fulfilled.match(result)) {
navigate('/success');
}Notação com builder versus notação com objeto
Verificação rápida
Recapitulação
A seguir
Perguntas Frequentes
A aula “Lógica assíncrona com createAsyncThunk” é grátis?
Sim — o texto completo de “Lógica assíncrona com createAsyncThunk” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Lógica assíncrona com createAsyncThunk”?
Trate chamadas de API no Redux com createAsyncThunk e o ciclo de vida pending/fulfilled/rejected. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Lógica assíncrona com createAsyncThunk”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Partes do Redux Toolkit e createSlice
- Lógica assíncrona com createAsyncThunk
- RTK Query: endpoints e armazenamento automático em cache
- Atualizações otimistas e invalidação do cache