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

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

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

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

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

const initialState = {
  counter: 0,
  increment: () => {
    // increment logic
  }
};

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

const initialState = {
  currentDate: new Date().toString()
};

或者

const initialState = {
  currentDate: new Date().getTime()
};

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

例如 不支持

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

但你写成

const initialState = {
  users: [
    { id: '1', name: 'John' },
    { id: '2', name: 'Jane' }
  ]
};

这样一个对象格式就OK了

你可能感兴趣的:(Redux)