• 都说Redux不支持非序列化数据 简单讲解非序列化数据概念 并举例说明


    之前我们强调过 redux 不支持非序列化数据
    它自带了序列化检查 如果存入非序列化数据 通常情况数据也可以正常存储进去 但是会报异常
    在这里插入图片描述
    大体表达的就是 你这是一个非序列化数据 我们无法提供很好的支持 如果后面出问题了 不要怪我们
    那么 具体什么叫非序列化数据呢?
    简单说:非序列化数据指的是无法被直接转化为字符串格式的数据

    在Redux中,非序列化数据无法被存储在状态树中或通过Redux的action进行传递。
    Redux要求存储在状态树中的数据必须是可序列化的,这样可以确保数据的一致性和可靠性。可序列化的数据可以被转化为字符串或其他格式,并可以在不同的环境中传递和存储。

    常见的非序列化数据包括一下几种

    函数:在Redux中,不能将函数作为状态树的一部分进行存储。例如,以下代码是不允许的:

    const initialState = {
      counter: 0,
      increment: () => {
        // increment logic
      }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Date对象:Date对象是表示日期和时间的内置JavaScript对象。Redux不支持将Date对象直接存储在状态树中。如果需要在Redux中存储日期,可以将其转化为字符串或时间戳格式。

    const initialState = {
      currentDate: new Date().toString()
    };
    
    • 1
    • 2
    • 3

    或者

    const initialState = {
      currentDate: new Date().getTime()
    };
    
    • 1
    • 2
    • 3

    Map和Set:Map和Set是ES6中的数据结构,它们允许我们存储键值对或唯一值的集合。Redux不支持将Map和Set直接存储在状态树中。如果需要在Redux中存储这些数据结构,可以将其转化为数组或对象的形式。

    例如 不支持

    const initialState = {
      users: new Map([
        ['1', { id: '1', name: 'John' }],
        ['2', { id: '2', name: 'Jane' }]
      ])
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    但你写成

    const initialState = {
      users: [
        { id: '1', name: 'John' },
        { id: '2', name: 'Jane' }
      ]
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这样一个对象格式就OK了

  • 相关阅读:
    计算机毕业设计SSM办公自动化系统【附源码数据库】
    SpringBoot如何优雅的进行参数校验
    NR modulation 1
    Redis基本全局命令(含key过期策略)
    java中的内存分配
    二十九、图像的高斯双边模糊操作
    电商新趋势:阿里巴巴1688.item_password API引领智能分享新风尚
    如何进行技术选型
    【pen200-lab】10.11.1.222
    过滤表filter达式cql相互转化
  • 原文地址:https://blog.csdn.net/weixin_45966674/article/details/134325571