将架构从 Normalizr v2 转换为 v3 时遇到问题
Having trouble converting schema from Normalizr v2 to v3
我刚刚更新到 normalizr 版本 3。1.x 所以我可以利用非规范化。尽管他们已经显着改变了 API。我在传输模式时遇到问题。
import { normalize, Schema, arrayOf, valuesOf } from 'normalizr';
const usersSchema = new Schema('users')
const photosSchema = new Schema('photos')
const phonesSchema = new Schema('phones')
photosSchema.define({
users: arrayOf(usersSchema)
})
phonesSchema.define({
users: arrayOf(usersSchema)
})
usersSchema.define({
photos: valuesOf(photosSchema),
phones: valuesOf(phonesSchema)
})
那是我现有的用户架构。我还在我的 redux 操作中使用了 redux-normalizr middleware,所以我将模式连接到我的操作,如下所示:
import { usersSchema } from '../normalizrSchemas/usersSchemas.js'
import { arrayOf } from 'normalizr'
export function getUsers(data) {
return {
type: 'GET_USERS',
payload: data,
meta: {
schema : arrayOf(usersSchema)
}
}
}
这是我第一次尝试转换架构。您似乎无法像使用 arrayOf
那样调用 schema.Array,所以我认为我需要将数组调用移至架构中。
import { schema } from 'normalizr';
const photos = new schema.Entity('photos')
const phones = new schema.Entity('phones')
const user = new schema.Entity('user', {
photos: [photos],
phones: [phones]
})
const users= new schema.Array('users', user)
export { users }
操作相同,但我删除了将架构包装在 arrayOf 中。所有用户数据都只是在没有任何规范化的情况下转储到结果中。数据是一个用户对象列表,每个对象包含一个 id,normalizr 应该获取它。我正在努力弄清楚如何让 normalizr 识别它是我认为的对象数组。
schema.Array
不接受密钥字符串名称 (docs)。第一个参数应该是架构定义。所以而不是
const users= new schema.Array('users', user)
你应该使用:
const users = new schema.Array(user)
或者,您可以将 shorthand 用于单个实体类型的数组:
const users = [ user ];
我刚刚更新到 normalizr 版本 3。1.x 所以我可以利用非规范化。尽管他们已经显着改变了 API。我在传输模式时遇到问题。
import { normalize, Schema, arrayOf, valuesOf } from 'normalizr';
const usersSchema = new Schema('users')
const photosSchema = new Schema('photos')
const phonesSchema = new Schema('phones')
photosSchema.define({
users: arrayOf(usersSchema)
})
phonesSchema.define({
users: arrayOf(usersSchema)
})
usersSchema.define({
photos: valuesOf(photosSchema),
phones: valuesOf(phonesSchema)
})
那是我现有的用户架构。我还在我的 redux 操作中使用了 redux-normalizr middleware,所以我将模式连接到我的操作,如下所示:
import { usersSchema } from '../normalizrSchemas/usersSchemas.js'
import { arrayOf } from 'normalizr'
export function getUsers(data) {
return {
type: 'GET_USERS',
payload: data,
meta: {
schema : arrayOf(usersSchema)
}
}
}
这是我第一次尝试转换架构。您似乎无法像使用 arrayOf
那样调用 schema.Array,所以我认为我需要将数组调用移至架构中。
import { schema } from 'normalizr';
const photos = new schema.Entity('photos')
const phones = new schema.Entity('phones')
const user = new schema.Entity('user', {
photos: [photos],
phones: [phones]
})
const users= new schema.Array('users', user)
export { users }
操作相同,但我删除了将架构包装在 arrayOf 中。所有用户数据都只是在没有任何规范化的情况下转储到结果中。数据是一个用户对象列表,每个对象包含一个 id,normalizr 应该获取它。我正在努力弄清楚如何让 normalizr 识别它是我认为的对象数组。
schema.Array
不接受密钥字符串名称 (docs)。第一个参数应该是架构定义。所以而不是
const users= new schema.Array('users', user)
你应该使用:
const users = new schema.Array(user)
或者,您可以将 shorthand 用于单个实体类型的数组:
const users = [ user ];