gpt4 book ai didi

javascript - 使用 TypeScript 打字的样式化系统 Prop

转载 作者:搜寻专家 更新时间:2023-10-30 21:11:46 25 4
gpt4 key购买 nike

我正在使用 styled-system该库的一个关键是使用速记 Prop 来轻松快速地设置主题。

我已经简化了我的组件,但这里是有趣的部分:

import React from 'react'
import styled from 'styled-components'
import { color, ColorProps } from 'styled-system'

const StyledDiv = styled('div')<ColorProps>`
${color}
`

const Text = ({ color }: ColorProps) => {
return <StyledDiv color={color} />
}

我在 color 属性上有一个错误:

Type 'string | (string | null)[] | undefined' is not assignable to type 'string | (string & (string | null)[]) | undefined'.

我认为这是因为 styled-system 使用与原生 HTML 属性 color 相同的命名并且它发生冲突。

我该如何解决?

最佳答案

color 似乎在 HTMLAttributes 下的 react 声明文件中声明 - 它未导出。

我必须通过创建 custom prop 来解决这个问题

示例使用 @emotion/styled 但也适用于 styled-components

// component.js
import styled from '@emotion/styled';
import { style, ResponsiveValue } from 'styled-system';
import CSS from 'csstype';

const textColor = style({
prop: 'textColor',
cssProperty: 'color',
key: 'colors'
});


type Props = {
textColor?: ResponsiveValue<CSS.ColorProperty>
}

const Box = styled.div<Props>`
${textColor};
`

export default Box;
// some-implementation.js
import Box from '.';

const Page = () => (
<Box textColor={['red', 'green']}>Content in a box</Box>
);

关于javascript - 使用 TypeScript 打字的样式化系统 Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53711454/

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