首页 > 解决方案 > 键是 ID 的对象的 PropType

问题描述

我正在将我的 redux 存储重构为键是 ID 而不是数组的对象。例子:

老的:

const orders = [
  { id: a, user: 1, items: ['apple','orange'] },
];

新的:

const orders = {
  a: { user: 1, items: ['apple','orange'] },
};

以前为订单指定 PropTypes 很容易,但现在不知道如何更改它,因为它是动态键的对象,但我想验证每个单独的订单。

order: PropTypes.arrayOf({
  PropTypes.shape({
    id: PropTypes.string.isRequired,
    user: PropTypes.number.isRequired,
    items: PropTypes.arrayOf(PropTypes.string).isRequired,
  }).isRequired,
}).isRequired,

我将如何更改我的 PropTypes 以匹配新结构?

标签: javascriptreactjsreact-proptypes

解决方案


来自 prop-types 文档

// An object with property values of a certain type
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),

所以这应该有效

orders: PropTypes.objectOf(
  PropTypes.shape({
    user: PropTypes.number.isRequired,
    items: PropTypes.arrayOf(PropTypes.string).isRequired,
  }).isRequired,
).isRequired,

推荐阅读