Redux:本地状态id和/或api uuid

Man*_*uro 5 javascript reactjs redux

我正在使用Redux和一个使用UUID的REST api.存储状态的常用模式是使用id作为对象的键:

entities: {
  articles: {
    1: {
      id: 1,
      title: 'Some Article',
      author: 1
    },
    2: {
      id: 2,
      title: 'Other Article',
      author: 1
    }
  },
  users: {
    1: {
      id: 1,
      name: 'Dan'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我将如何使用api中的UUID?我希望能够创建一个新实体,而无需先从服务器请求UUID(用于离线功能).

我是不是该:

  1. 使用本地ID,将UUID保留在_id实体的属性中,并仅在发出API请求时使用它?这似乎是最简单的方法,虽然它感觉多余,我可能不得不_id在某些情况下搜索实体.
entities: {
  articles: {
    1: {
      _id: 'UUID',
      title: 'Some Article',
      author: 1
    },
    2: {
      id: 'UUID',
      title: 'Other Article',
      author: 1
    }
  },
  users: {
    1: {
      _id: 'UUID',
      name: 'Dan'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 仅使用API​​中的UUID,并且在创建新项目时使用排序if临时ID,直到API调用解决?这似乎是最好的方式,虽然我不确定如何改变id,这也感觉不对(因为他们是id).
entities: {
  articles: {
    'UUID': {
      _id: 'UUID',
      title: 'Some Article',
      author: 'UUID'
    },
    'UUID': {
      _id: 'UUID',
      title: 'Other Article',
      author: 'creating'
    }
  },
  users: {
    'UUID': {
      _id: 'UUID',
      name: 'Dan'
    },
    'creating': {
      name: 'Stan'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 做其他方式吗?

小智 0

在 API 返回响应之前,我不会将其添加到 Redux 存储中。

在 Vue 中,在给定组件的数据中,我通常有两个(有时更多)根键,其中一个指向 Redux 存储中处理数据的部分,另一个通常是form或类似的东西,并且Vue 数据由于绑定而发生变化。

在用户启动添加资源 ( ) 的操作POST /resources并且服务器返回成功响应后,我调度一个操作addedResource。在此之前我会发送类似的东西addingResource,等等。

有什么理由这行不通吗?使用自动递增的整数 id 字段与 UUID 应该没有区别。您的数据标准化仍应以相同的方式工作。