lom*_*ine 5 typescript reactjs styled-components
我正在尝试将样式组件与打字稿和 BEM 结构一起使用
所以我有一个简单的例子
索引.tsx
import styled from 'styled-components'
import Header from './Header'
interface ICard {
Header:
}
const Card = styled.div`
border: 1px solid gray;
padding: 10px;
`
Card.Header = Header
export default Card
Run Code Online (Sandbox Code Playgroud)
标头.tsx
import styled from 'styled-components'
const Header = styled.h1`
color: #313c53;
font-size: 1.2em;
line-height: 1.5;
`
export default Header
Run Code Online (Sandbox Code Playgroud)
并在标记中
<Card>
<Card.Header>
Header
</Card.Header>
</Card>
Run Code Online (Sandbox Code Playgroud)
我的问题出在 index.tsx 中,我在这里收到错误Card.Header = Header
Type 'StyledComponent<"label", any, {}, never>' is not assignable to type 'never'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
我知道这是与打字稿相关的,我一直在尝试修复界面,但无法让它工作。
我该如何修复这个打字稿错误?
当您尝试分配StyledComponent 内部Card并Card创建为StyledComponent.
请使用以下代码,
import styled from "styled-components";
import Header from "./header";
const Card: any = styled.div`
border: 10px solid green;
padding: 10px;
`;
Card.header = Header;
export default Card;
Run Code Online (Sandbox Code Playgroud)
其他方法是在 TypeScript 中创建一个可用于定义类型的接口。
请参阅以下代码相同,
import styled, { StyledComponentBase } from "styled-components";
import Header from "./header";
interface ICard extends StyledComponentBase<any, {}> {
header?: any;
}
const Card: ICard = styled.div`
border: 10px solid green;
padding: 10px;
`;
Card.header = Header;
export default Card;
Run Code Online (Sandbox Code Playgroud)
请在[此处][3]查看此示例的演示。
希望对你有帮助。
| 归档时间: |
|
| 查看次数: |
3523 次 |
| 最近记录: |