Redux:本地州的id和/或api uuid

时间:2016-09-02 09:02:16

标签: 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'
    }
  }
}

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

我应该:

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

1 个答案:

答案 0 :(得分:0)

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

在Vue中,在给定组件的数据中,我通常有两个(有时更多)根密钥,其中一个指向我的Redux存储区中处理数据的部分,另一个通常是{{1}或者那种东西,Vue数据因绑定而改变。

在用户启动添加资源(form)的操作后,服务器返回成功的响应后,我发送了一个操作POST /resources。在此之前,我会发送类似addedResource等的内容

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