获取组件 propTypes 作为字符串

宝子豪

我想做一个包装器组件,它会自动将其子级的 proptypes 显示为 string

例子

例如,我的组件可能是:

export class abc extends Component {
    static propTypes = {
        disabled: PropTypes.bool,
        text: PropTypes.oneOf(['a','b'])
    }
}

包装器将接收组件:

<Wrapper>
    <abc />
</Wrapper>

并输出如下所示的 HTML:

<pre>
    disabled: PropTypes.bool
    text: PropTypes.oneOf(['a', 'b'])
</pre>

我试过的

我曾尝试直接从实际的孩子中提取道具,最终得到了一个如下所示的包装器组件:

const wrapper = props => (<pre>
  {Object.entries(props.children.type.propTypes).map((entry) => (
    <div key={entry[0]}>{entry[0]}: {getPropTypeFromFunction(entry[1])}<br/></div>
  ))}
</pre>)

其中getPropTypeFromFunction的方法是:

const getPropTypeFromFunction = func => {
  for (const k in PropTypes) {
    switch (func) {
      case PropTypes[k]:
        return k
      case PropTypes[k].isRequired:
        return `${k}.isRequired`
      default:
        break;
    }
  }
  return "Unknown PropType"
}

然而,当我们获得非原始(?)属性PropTypes.onOf(['a', 'b'])类型时,这不起作用(例如。另外,必须以这种方式处理看似如此简单的事情感觉有点麻烦

是否有某种优雅的解决方案(理想情况下没有任何外部库?)

宝子豪

最终使用react-docgen,它在内部使用重铸这是通过将整个源文件作为字符串解析为抽象语法树 (AST) 来工作的,然后用于生成文档。有一些库使用它来实现文档,例如storybook.js和他们的info add-on,我最终使用了它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取React组件的类型propTypes定义

来自分类Dev

获取React组件的类型propTypes定义

来自分类Dev

在组件外反应 propTypes

来自分类Dev

验证 PropTypes 传递的组件

来自分类Dev

如何获取JSX作为字符串?

来自分类Dev

获取子组件为字符串

来自分类Dev

如何获取字符串中的std :: set字符集,作为字符串?

来自分类Dev

在PropTypes中防止div作为子级只允许一个组件

来自分类Dev

rlang-获取作为字符串传递的对象的类,而不是字符串本身或quo

来自分类Dev

在C ++中将字符串结尾作为const char *获取

来自分类Dev

获取TextBox的FontFamily作为字符串XAML C#

来自分类Dev

获取xml属性的值作为字符串

来自分类Dev

在C ++中将projectDir作为字符串或char *获取

来自分类Dev

如何获取表的键作为字符串?

来自分类Dev

获取对象名称作为字符串在PHP?

来自分类Dev

获取Swift变量的实际名称作为字符串

来自分类Dev

如何获取类名作为字符串?

来自分类Dev

PlayFramework:获取原始请求xml正文作为字符串

来自分类Dev

如何获取Image.Source作为字符串

来自分类Dev

获取Enum值作为字符串数组

来自分类Dev

获取Debug.Assert条件作为失败字符串

来自分类Dev

如何获取值的类型作为字符串?

来自分类Dev

如何获取父节点的值作为字符串?

来自分类Dev

获取字符串标记/参数作为解析

来自分类Dev

mongodb在查找查询中将_id作为字符串获取

来自分类Dev

获取字符串作为变量名

来自分类Dev

如何从NSURLSession获取数据作为字符串?

来自分类Dev

android-获取textview ID作为字符串

来自分类Dev

获取AFNetworking响应的结果作为JSON字符串数组

Related 相关文章

热门标签

归档