我正在将带样式的组件库与TypeScript一起使用。创建从react组件B
继承的样式化组件A
时遇到问题。 A
是node_module(我无法更改A
的行为)。但是A
将所有道具传递给div
。
如果B
具有A
没有的任何道具,则由于div
没有属性isExpanded
,控制台会显示警告消息:
警告:React无法识别DOM元素上的
isExpanded
道具。如果您有意让它作为自定义属性出现在DOM中,请将其拼写为小写isexpanded
。如果您不小心从父组件传递了它,请将其从DOM元素中删除。
interface AProps {
}
interface BProps {
isExpanded: boolean
}
const A = (props: AProps) => (
<div {...props} />
) // Component A pass all props to <div>
const B = Styled(A)<BProps>`
` // I need isExpaned prop in component B and I would like to interit from A
有什么方法可以防止样式化组件中的“冒泡”道具从子对象到父对象?
答案 0 :(得分:0)
样式化组件中没有内置解决方案,但是您可以将其包装到功能组件中并破坏不需要的属性。
const B = Styled(({isExpanded, ...props})=><A {...props}/>)<BProps>`
您还可以查看有关此主题的github问题:https://github.com/styled-components/styled-components/issues/135