【发布时间】:2019-12-12 19:13:39
【问题描述】:
我想使用高阶组件向我的组件包装器添加样式。 Typescript 说ComponentWithAdddedColors 有错误。
type Props = {
bg?: string;
};
function withColors<TProps>(
Component: React.ComponentType<TProps>
): React.ComponentType<TProps & Props> {
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
const { bg, ...componentProps } = props;
const ComponentWithAdddedColors = styled(Component)`
${bg && `background: ${bg};`}
`;
return <ComponentWithAdddedColors {...componentProps} />; //Typecheck error
};
return ColoredComponent;
}
当我想返回使用{...componentProps} 传递给 HOC 的组件时,也会出现类型检查错误。
...
{
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
const { bg, ...componentProps } = props;
return <Component {...componentProps} />; //Typecheck error
};
return ColoredComponent;
}
但是,当我使用 {...props} 将所有内容传递给组件时,没有类型检查错误。
...
{
const ColoredComponent: React.ComponentType<TProps & Props> = props => {
return <Component {...props} />; //No error
};
return ColoredComponent;
}
【问题讨论】:
-
你得到的类型错误到底是什么?
-
你为什么不喜欢 styled-components 中的主题支持? styled-components.com/docs/advanced#theming
标签: reactjs typescript styled-components