redux - 使用 normalizr 规范化简单数组

标签 redux normalizr

我刚刚开始在 Redux 中使用 normalizr,我被困在我看来像一个简单的问题上,但我可能做错了。所以我想对这样的数组进行规范化:

{
  articles: [
    {id: 1, someValue: 'test'},
    {id: 2, someValue: 'test2'}
  ]
}

变成这样的结构:
{
  result: {
    articles: [1,2]
  },
  entities: {
    articles: {
      1: {someValue: 'test'},
      2: {someValue: 'test2'}
    }
  }
}

我试过这样做:
const article = new Schema('articles');
responce = normalize(responce, {
  articles: arrayOf(article)
});

但这给了我一个看起来像这样的结构:
{
  articles: {
    entities: {},
    result: {
      0: {someValue: 'test'},
      1: {someValue: 'test2'}
    }
  }
}

现在没有文章 ID 数组。我假设我在这里遗漏了一些东西:
article.define({
  ...
});

但无法弄清楚在这个简单的情况下需要去那里

最佳答案

您不必定义文章。确保您已从 normalizr 导入所有内容正确。我试过你的代码,它给了我预期的结果:

import { normalize, Schema } from 'normalizr';

let response = {
  articles: [
    { id: 1, someValue: 'test' },
    { id: 2, someValue: 'test2' }
  ]
};

const article = new Schema('articles');

response = normalize(response, {
  articles: [article]
});

console.log(response);

输出:
{
  result: {
    articles: [1,2]
  },
  entities: {
    articles: {
      1: {someValue: 'test'},
      2: {someValue: 'test2'}
    }
  }
}

关于redux - 使用 normalizr 规范化简单数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852893/

相关文章:

reactjs - 如何在另一个 asyncThunk 中调度 asyncThunk

javascript - 将 Redux 状态传递给组件时的最佳实践

reactjs - 用于使用react-redux创建react-app的HMR

reactjs - 在 React UI 组件中显示标准化数据

reactjs - Redux/Redux-Saga 中的回调是反模式吗?

javascript - 了解Redux生命周期,(初始ajax加载不起作用)

javascript - 如何在大型规范化 Redux 存储中组织 reducer

javascript - Normalizr 不处理信封中的数据

javascript - 如何使用 normalizr 和/或 immutablejs 创建规范化数据结构

javascript - 如何使用 normalizr 根据实体父项的值通过不同模式规范化数据?