React中Material UI图标作为组件prop时的propType应该设置为什么?
正确的PropType类型是PropTypes.node,你当前的使用场景是直接传入已经渲染好的MUI图标元素,该类型可以覆盖所有React可渲染内容,完全匹配你的需求。
针对两种不同的传参方式,对应PropType定义如下:
场景1:你当前的用法(传入已实例化的图标元素)
你现在写的<Test icon={<VisibilityIcon />} />是直接传已经实例化的React元素,对应的prop定义如下:
Test.propTypes = { // 非必填写法 icon: PropTypes.node // 如果要求必须传icon,改成下方写法 // icon: PropTypes.node.isRequired };
场景2:传入图标组件本身(由Test内部负责渲染)
如果你调整用法,把未实例化的图标组件传给Test,再由Test内部渲染:
// App.js传参写法 <Test icon={VisibilityIcon} /> // Test.jsx内部渲染逻辑 const { icon: Icon } = props; return <div><Icon /></div>
这种场景下对应的prop类型为PropTypes.elementType:
Test.propTypes = { icon: PropTypes.elementType };
内容的提问来源于stack exchange,提问作者CCCC
相关产品推荐
相关产品推荐

