Box我正在尝试在新项目上制作通用的反应组件。这将是所有其他组件的基础。我使用 styled-system、emotion 以及最终的 theme-ui 来处理所有组件的主题和样式。
我的根Box组件如下所示:
import styled from '@emotion/styled';
import {
compose,
space,
layout,
flexbox,
border,
position,
color,
SpaceProps,
ColorProps,
LayoutProps,
FlexboxProps,
BorderProps,
PositionProps,
} from 'styled-system';
export type BoxProps = SpaceProps &
ColorProps &
LayoutProps &
FlexboxProps &
BorderProps &
PositionProps;
export const Box = styled.div<BoxProps>(
{
boxSizing: 'border-box',
minWidth: 0,
},
compose(space, color, layout, flexbox, border, position)
);
Run Code Online (Sandbox Code Playgroud)
我使用 styled-system 中的 styled 函数及其关联类型来创建一个接受空间、颜色、布局、flexbox、边框和位置属性的 Box 组件。
我收到的错误仅发生在color道具上。一旦我删除它,我就不会收到任何错误。
TS 错误为:
Type 'BoxProps' does not …Run Code Online (Sandbox Code Playgroud) 目前我正在手动添加图标,但对于几个图标来说,这种方式没有问题。但如果有 100 个图标,这就成了一个真正的问题。我怎样才能使这个可重复使用。所以我可以应用这个元素,这样它就可以是我想要的任何图标。最后它应该看起来像这样。
<Icon icon='login' color="yellow" mr="10px" fontSize="20px" />
Run Code Online (Sandbox Code Playgroud)
<Icon icon='login' color="yellow" mr="10px" fontSize="20px" />
Run Code Online (Sandbox Code Playgroud)