有没有可以用来忽略缺少的强制性原型警告的道具?

问题描述

我知道这个问题似乎有些奇怪,但是我正在尝试实现一个框架加载器。为此,我想向我的组件发送一个诸如“ loading = {true}”之类的道具,以告诉他们忽略其他参数,因为他们不需要它(它们只需要显示它们正在加载,而不是显示任何有意义的东西)

我想到了一些解决方法

  • 我可以声明非必需的原型,而只需声明一个认值...但是在加载步骤之外,我不会有任何警告
  • 只需提供一些巨型道具作为强制性道具,但这是很多无用的代码
  • 复制每个组件-“标准组件”和“加载组件”,但是我有一些罕见的特殊情况,其中一个元素决定了它们在javascript中显示多少个元素-基于用户视口也必须复制-将加载器的文件容量增加一倍。

最后一个想法似乎是最有前途的,因为它也可以防止在附加条件下妨碍组件的运行,但是我仍然想研究让组件管理自己的渲染的想法。

那么,有没有办法告诉Proptypes:“嘿,我知道您没有所有必需的道具,但是一次却不信任我?”

非常感谢!

解决方法

您可以使用可选形状。

看起来可能像这样; (考虑为伪代码)

import React from 'react';
import PropTypes from 'prop-types';
import MyComponent from 'somewhere';

const Example = ({ loading,options }) => (
  loading ? <div>Loading...</div> : <MyComponent {...options} />
);

Example.propTypes = {
  loading: PropTypes.bool.isRequired,options: PropTypes.oneOfType([null,PropTypes.shape({
    prop1: PropTypes.bool.isRequired,})]),}

Example.defaultProps = {
  options: null,}

export default Example;