gpt4 book ai didi

typescript - 样式组件 defaultProps

转载 作者:行者123 更新时间:2023-12-04 01:59:56 24 4
gpt4 key购买 nike

如果我有以下带有 defaultProp 的按钮

export interface IButton {
variant: 'action' | 'secondary';
}

export const Button = styled('button')<IButton>`
background-color: #fff;

${props =>
props.variant === 'action' &&
css`
color: blue;
`};

${props =>
props.variant === 'secondary' &&
css`
color: gray;
`};
`;

Button.defaultProps = {
variant: 'action',
};

有没有办法输入它?当尝试使用它时
<Button>Hello</Button>

typescript 提示没有传递变体,有没有办法用样式组件输入 defaultProps ?

最佳答案

问题在于 TypeScript 3.0 对 defaultProps 的支持在检查 JSX 元素时需要 defaultProps 的类型在组件上声明。变异 defaultProps现有组件的不工作,我不知道有什么好方法来声明 defaultProps在由 styled 之类的函数生成的组件上. (从某种意义上说,这是有道理的:库创建了一个组件并且不希望您修改它。也许库甚至出于某些内部目的设置了 defaultProps 本身。)kingdaro 的解决方案很好,或者您可以使用包装器成分:

const Button1 = styled('button')<IButton>`
background-color: #fff;

${props =>
props.variant === 'action' &&
css`
color: blue;
`};

${props =>
props.variant === 'secondary' &&
css`
color: gray;
`};
`;

export class Button extends React.Component<IButton> {
static defaultProps = {
variant: 'action'
};
render() {
return <Button1 {...this.props}/>;
}
}

关于typescript - 样式组件 defaultProps,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com