react高阶组件如何取到包裹组件的propTypes?

问题描述

目前需求做一个HOC组件调试工具,选中一个被HOC包裹的组件,会有一个选中的框,同时一个浮层提示组件数据,如果有propTypes,做出一些相应警告和提示。
开发过程中,发现取到propTypes都是func。

相关代码

const HOC = (Ele) => class extends Component{
    render() {
        console.log(Ele.propTypes)
        return <Ele {...this.props} />
    }
}

你期待的结果是什么?实际看到的错误信息又是什么?

clipboard.png

阅读 2.1k
1 个回答

事实上它本来就是一个function

假设你使用了propTypes模块,
我们以propTypes.string为例, 可以看源码:

export default {

  string: createPrimitiveTypeChecker('string') // 它返回的就是function

};

https://github.com/aackerman/...

这个函数真正起到作用是时候是组件接受prop的时候,将组件接受的prop作为参数传给这个函数。

https://github.com/facebook/r...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题