在状态中检测到不可序列化的值

时间:2021-05-12 19:31:37

标签: reactjs redux react-redux redux-toolkit

我在登录并转到仪表板时一直看到此错误。

显示这个错误 在状态中检测到不可序列化的值,路径为:bugs.0。值:错误 {name:“加载时崩溃”,详细信息:“3 秒后崩溃”,步骤:“打开应用程序,它将崩溃”,优先级:1,分配:未定义,...} 查看处理此操作类型的减速器:bug/getBugs。

这是减速器:

/* eslint-disable no-unused-vars */
import {createSlice} from '@reduxjs/toolkit'
import {retrieveBugs} from '../bugController'

const slice = createSlice({
    name:"bug",
    initialState:[{}],
    reducers:{
        getBugs:(state) => retrieveBugs(),
        
        createBugs: (state,actions) =>{
            const {name,details,steps,priority,assaigned,creator,version,time} = actions.payload;
            state.LoggedIn =true;
            state.admin = true;
        },
        updateBug:(state,actions) => {
            const {name,details,steps,priority,assaigned,creator,version,time} = actions.payload;
            state.LoggedIn =true;
            state.admin= true;
        
        },
        markComplete:(state,actions) => {
            const {name,details,steps,priority,assaigned,creator,version,time} = actions.payload;
            state.LoggedIn =true;
            state.admin= true;
        }
    }
})

export default slice.reducer;

export const {getBugs, createBugs, updateBug, markComplete} = slice.actions;

这里是 bugController

import bugModel from '../Models/bugModel'

export function retrieveBugs(){
    let data = [];

    data.push(new bugModel({
        name:"Crash on load",
        details: "Crash after 3 seconds",
        steps: "Open application and it will Crash",
        assaigned: "Al Amzad",
        creator: "John Doe",
        priority: 1,
        version: "V1.0",
        time: "1:45",
    }))
    
      data.push(new bugModel({
        name:"Wont load",
        details: "Application doesn't load",
        steps: "Open the Application it won't Load ",
        assaigned: "Al Amzad",
        creator: "John Doe",
        priority: 3,
        version: "V3.0",
        time: "23:45",
    }))

    // eslint-disable-next-line no-unused-vars
    let sorted = data.sort((a,b) => {return a.priority - b.priority})

    return sorted;
}

1 个答案:

答案 0 :(得分:0)

Redux requires that you only put plain non-serializable JS objects, arrays, and primitives into state

new bugModel 将是一个类实例,因此不是一个简单的可序列化 JS 对象。所以,RTK 特地捕捉了这个错误并警告你不要这样做。

解决方法是改用普通数据而不是类。