2

如果您有一个规范化的 redux 存储并为实体使用 id,但还有其他额外的唯一标识符并且也需要使用它们,您会怎么做。

例子

{ 
   entities: {
        users: {
           1: {
              name: 'foo',
              id: 1, //unique
              uuid: '3d89afe9-6a85-46ed-ac0d-28e10b21d09e' // unique
            },
            // ...
        }
   }
}

大多数我使用id属性来查找实体,但有时我只有uuid属性。

有没有办法使用更高级的模式来拥有第二个映射uuid到的字典id,使用 es6 Map 来拥有一个由两者iduuid或其他我没有想到的方式组成的键?

以下将是有用的:

{ 
   entities: {
        users: {
           1: {
              name: 'foo',
              id: 1, //unique
              uuid: '3d89afe9-6a85-46ed-ac0d-28e10b21d09e' // unique
            },
            // ...
        }
        usersUuidToIdMapping: {
           '3d89afe9-6a85-46ed-ac0d-28e10b21d09e': 1
           // ...
        }   

   }
}

最好的,法鲁克

4

1 回答 1

0

如果要将 定义为 id,则可以在定义实体时uuid在选项上使用字符串。idAttribute

new schema.Entity('users', {}, { idAttribute: 'uuid' })

如果您想同时使用两者,idAttribute可以是一个具有三个参数的函数valueparentkey

new schema.Entity('users', {}, {
  idAttribute: user => user.uuid ? `${user.id}-${user.uuid}` : user.id
})

更多信息在这里:https ://github.com/paularmstrong/normalizr/blob/master/docs/api.md#idattribute-usage

于 2018-01-24T18:58:20.163 回答