Сервис быстрых ответов от искусственного интеллекта
Вопрос пользователя:
Ответ нейросети:
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
import { getTracks } from '../api/tracksAPI';
export const fetchTracks = createAsyncThunk(
'tracks/fetchTracks',
async () => {
const response = await getTracks();
return response.data;
}
);
const tracksSlice = createSlice({
name: 'tracks',
initialState: {
tracks: [],
loading: 'idle',
error: null,
},
reducers: {
// Добавьте здесь необходимые редюсеры
},
extraReducers: (builder) => {
builder
.addCase(fetchTracks.pending, (state) => {
state.loading = 'loading';
})
.addCase(fetchTracks.fulfilled, (state, action) => {
state.loading = 'idle';
state.tracks = action.payload;
})
.addCase(fetchTracks.rejected, (state, action) => {
state.loading = 'idle';
state.error = action.error.message;
});
},
});
export default tracksSlice.reducer;
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { fetchTracks } from './tracksSlice';
const TracksComponent = () => {
const dispatch = useDispatch();
const tracks = useSelector((state) => state.tracks.tracks);
const loading = useSelector((state) => state.tracks.loading);
useEffect(() => {
dispatch(fetchTracks());
}, [dispatch]);
return (
<div>
{loading === 'loading' ? (
<p>Loading...</p>
) : (
<ul>
{tracks.map((track) => (
<li key={track.id}>{track.name}</li>
))}
</ul>
)}
</div>
);
};
export default TracksComponent;
Напишите нам, если в вопросе есть ваши персональные данные (yasnoponyatno24@yandex.ru)
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.