@Markiv07

Как достать данные из redux?

Пропадают данные из state в редаксе
Использую redux и redux toolkit

Вот мой слайс
import {createAsyncThunk, createSlice} from "@reduxjs/toolkit";
import * as api from "../../../api/index";
import axios from "axios";


export const getPosts = createAsyncThunk('posts/getPosts',async ()=> {
    const response = await api.fetchPosts()
    // const response = await axios.get('http://localhost:3002/api/posts')
    return response.data
})

const initialState = {
    posts: [],
    loading: false,
    error:null
}


export const postsSlice = createSlice({
    name: "posts",
    initialState,
    reducers:{
        createPost: {
            reducer(state,action){
                state.posts.push(action.payload)
            },
            prepare(title, description, creator, category, tags, img){
                return{
                    payload:{
                        title,
                        description,
                        creator,
                        category,
                        tags,
                        img,
                        createdAt: new Date().toISOString(),
                        published: false,
                        likes: [],
                    }
                }
            }
        },
    },
    extraReducers: {
        [getPosts.pending]: (state) => {
            state.loading = true
        },
        [getPosts.fulfilled]: (state,  action ) => {
            state.loading = false
            state.posts = action.payload
        },
        [getPosts.rejected]: (state) => {
            state.loading = false
        },
    },

})


export const {createPost} = postsSlice.actions


export default postsSlice.reducer


вот компонента в которой должны отображаться посты
import React, {useEffect, useState} from 'react';
import {useDispatch, useSelector} from "react-redux";
import CardMain from "../../components/CardMain/CardMain";
import {createPost, getPosts} from "../../redux/features/posts/postsSlice"

const Main = () => {
    const dispatch = useDispatch()
    const {posts} = useSelector((state) => state.posts)
    useEffect(() => {
            dispatch(getPosts())
    }, []);


    return (
        <div>
            <div>
                {
                posts.map(user=>(
                   <CardMain post={user} key={user._id}/>
                ))
                }
            </div>
        </div>
    );
};

export default Main;


Но постоянно выдает какиет-то ошибки. А самое главное что когда хочу получть первый объект из массива и записываю как
posts[0].data.map(user=>(
то почему-то в state пропадают все данные
62f8b1fa3b91c759915978.png

А когда убираю то в стейте появляются посты с дб
62f8b1098ed26719278435.png

но всё равно не выводиться и выдает такие ошибки

Uncaught TypeError: Cannot read properties of undefined (reading 'map')

Uncaught TypeError: posts.map is not a function
  • Вопрос задан
  • 816 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы