首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React PropTypes.shapes相互依赖

React PropTypes.shapes相互依赖
EN

Stack Overflow用户
提问于 2019-10-09 15:48:38
回答 2查看 149关注 0票数 1

我声明了两个形状:

代码语言:javascript
复制
export const parentShape = PropTypes.shape({
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...someProps
  children: PropTypes.arrayOf(childShape),
});

export const childShape = PropTypes.shape({
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...otherProps
  parent: parentShape,
});

parentShape使用childShapechildShape使用parentShape

现在我对在定义childShape之前使用它提出了警告。我怎么才能修复它?

EN

回答 2

Stack Overflow用户

发布于 2019-10-09 15:58:21

您可以使用parentShape的属性创建一个变量(parentShapeProps),而不是直接将其传递给PropTypes.shape,然后只有在定义了childShape之后才能将children添加到parentShapeProps

代码语言:javascript
复制
const parentShapeProps = {
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...someProps
};

export const parentShape = PropTypes.shape(parentShapeProps);

export const childShape = PropTypes.shape({
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...otherProps
  parent: parentShape,
});

parentShapeProps.children = PropTypes.arrayOf(childShape);
票数 0
EN

Stack Overflow用户

发布于 2019-10-09 16:06:52

您可以使用let/var预定义childShape

代码语言:javascript
复制
import PropTypes from 'prop-types';

let childShape;

const parentShape = PropTypes.shape({
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...someProps
  children: PropTypes.arrayOf(childShape),
});

childShape = PropTypes.shape({
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  // ...otherProps
  parent: parentShape,
});

export default { childShape, parentShape };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58299382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档