gpt4 book ai didi

redux - 如何使用 Normalizr 处理基本的嵌套 JSON?

转载 作者:行者123 更新时间:2023-12-02 15:34:12 25 4
gpt4 key购买 nike

我有一个非常标准的嵌套 JSON 响应。 项目有许多仪表板仪表板有许多图表

定义和使用架构的正确方法是什么?

下面是我的 Schemas.js、我的 API 响应以及 Normalizr 将我的 API 响应转换成的代码。

Schemas.js:

import { Schema, arrayOf, normalize } from 'normalizr';

// Create a schema for each model.
const project = new Schema('projects');
const dashboard = new Schema('dashboard');
const chart = new Schema('chart');

// Projects have many dashboards.
project.define({
dashboards: arrayOf(dashboard)
});

// Dashboards have many charts.
dashboard.define({
charts: arrayOf(chart)
});

export const Schemas = { project, dashboard, chart };

我的 API 响应:

{
projects: [{
id: 1,
name: "Project 1",
dashboards: [{
id: 1,
name: "Dashboard 1",
charts: [{
id: 1,
name: "Chart 1"
},
{
id: 2,
name: "Chart 2"
}]
},
{
id: 2,
name: "Dashboard 2",
charts: [{
id: 3,
name: "Chart 3"
},
{
id: 4,
name: "Chart 4"
}]
}]
},
{
id: 2,
name: "Project 2",
dashboards: [{
id: 3,
name: "Dashboard",
charts: []
}]
}]
}

当我在操作中收到此 JSON 时,我会执行 normalize(response, Schemas.project);。这似乎将整个响应移至 entities.projects.undefined 中。

{
entities: {
projects: {
undefined: {
projects: [{
id: 1,
name: "Project 1",
...
}, ...]
}
}
},
result: undefined
}

我应该如何正确定义和使用我的架构?

引用文献:

https://github.com/gaearon/normalizr

https://github.com/reactjs/redux/blob/master/examples/real-world/actions/index.js

最佳答案

这应该会给你想要的结果:

normalize(response, {
projects: arrayOf(Schemas.project)
});

项目 key 是必需的,因为您的响应中有一个额外的 key ,并且 arrayOf() 指示 API 返回结果数组。

关于redux - 如何使用 Normalizr 处理基本的嵌套 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com