我有一个样式化的组件,它需要接收 prop 来决定它应该如何被样式化。看起来像这样:
const StyledTypography = styled(Typography)(
({ myColor = "black", isLarge = false }) => ({
"&&": {
fontSize: isLarge ? 30 : 16,
border: `1px solid ${myColor}`,
margin: 10,
color: myColor
}
})
);
不幸的是,isLarge
会导致以下警告:
警告:React无法识别DOM元素上的isLarge
prop。如果您有意希望它在DOM中显示为自定义属性,请将其拼写为小写的islarge
。如果您意外地从父组件传递了它,请将其从DOM元素中删除。
(Same带有myColor
)
在另一个thread中,我被告知需要做的只是使用shouldForwardProp
作为函数,在第二个参数中返回一个布尔值,以决定应该将哪些 prop 传入DOM DOM:
const StyledTypography = styled(Typography, { shouldForwardProp: () => false })(
...
);
不幸的是,这不起作用。
有办法做到这一点吗?
下面是一个包含警告和所有内容的示例应用程序:https://codesandbox.io/s/crimson-fast-qll47?file=/src/App.js
3条答案
按热度按时间n3ipq98p1#
试试这个
8i9zcol22#
我有一个类似的问题,用
styled
创建的组件上的自定义 prop 从@material-ui/core/styles
,它几乎让我疯了。使用MUI 4.11的解决方案与@emotion/styled
不为我工作。作为一个有效的解决方案,我创建了一个中间组件,它不将自定义属性传递给DOM。
在上面的例子中,它看起来像
对我来说,这是一个可行的解决方案,希望这也能帮助其他人
zwghvu4y3#
自定义情感 prop 转发
从**@情感/是-属性-有效使用是属性-有效**
示例:
注:对于** typescript **,请执行以下操作:
检查文档