有没有一个道具可以用来忽略缺失的强制性道具类型警告



我知道这个问题可能看起来有点奇怪,但我正在尝试实现一个骨架加载程序。为了做到这一点,我想给我的组件发送一个道具,比如";加载={true}";告诉他们忽略其他论点,因为他们不需要它(他们只需要显示他们正在加载,而不是显示任何有意义的东西(

我想到了几个解决办法:

  • 我可以声明proptypes为不需要的,只需声明一个默认值。。。但是在装载步骤之外我不会有任何警告
  • 只需为强制道具提供一些巨型道具,但这是很多无用的代码
  • 复制每个组件-;标准一";以及";加载一个";但我有一些罕见的角落案例,其中一个元素决定了它们在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;

最新更新