当前位置: 首页 > 面试题库 >

在Typescript中使用样式化的组件,prop不存在吗?

艾翼
2023-03-14
问题内容

这是我的样式化组件。

import * as React from 'react';
import styled from 'styled-components';
import { ComponentChildren } from 'app-types';

interface Props {
    children: ComponentChildren;
    emphasized: boolean;
}

const HeadingStyled = styled.h2`
    ${props => props.emphasized && css`
        display: inline;
        padding-top: 10px;
        padding-right: 30px;
  `}
`;

const Heading = (props: Props) => (
    <HeadingStyled>
        {props.children}
    </HeadingStyled>
);

export default Heading;

我收到以下警告:

  • Property 'emphasized' does not exist on type 'ThemedStyledProps<DetailedHTMLProps<HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, any>'.
  • Cannot find name 'css'. Did you mean 'CSS'?

我怎样才能使它工作?


问题答案:
  • 样式化的组件将必须指定prop才能传递给类似的组件styled("h2")<IProps>。您可以从文档中了解有关模式的更多信息
  • css此处不是必需的,当您实际上需要从函数返回CSS时,它将作为帮助程序添加。查看条件渲染。

考虑到这些因素,该组件将变为:

const HeadingStyled = styled("h2")<{emphasized: boolean}>`
  ${props => props.emphasized && `
    display: inline;
    padding-top: 10px;
    padding-right: 30px;
  `}
`;

一个用例 css



 类似资料:
  • 我有以下样式的组件: 其中主题是: 我收到以下打字错误: 类型“未定义”不能用作索引类型。 不知道为什么假设是未定义的,如果它是在中定义的-我如何让TypeScript识别这一点?

  • Button组件通常由Text元素组成,该元素用TouchableHighlight(或其他touchable)包装。我正在尝试创建一个使用styled-components样式的按钮组件,但是我的样式很难动态响应道具。 下面,我创建了一个按钮组件,类似于样式化组件文档中的Adapting based on props示例。 导入后,我用的按钮是这样的... 所以,我希望我的纽扣看起来像这样...

  • 我试图找到一种方法来动态导入继承一些标准样式的svg图标。我没有看到其他人写这个...所以我想我走错了路。 我尝试过在样式化的组件中创建一个SVG包装器,但这给了我一个svg的巢 SVG图标代码 我的图标代码 导入正在工作并显示,但我希望将组件作为样式化组件,这将使我能够使用道具设置主题并动态更改SVG样式。

  • 我正在开发一个带有样式组件的反应应用程序,我有一个组件“导航”。在这个组件中有更多的组件,如,等。Header例如是这样声明的: 问题是,我在不同的文件中有这个导航组件,对于所有文件,样式都很好,但现在我只想在其中一个文件中更改标题组件的背景色,它位于(?)导航组件。我该怎么做?我知道可以用const NewNav=styled(导航)之类的东西从导航组件更改样式,`但是标题呢? 先谢谢你。

  • 我有一个问题,试图测试与样式组件制成的组件。 因此,我有两个组件,如果我将鼠标悬停在第一个元素上,我试图改变第二个组件的背景色。 我的组件: 每当我尝试用jest它总是抛出一个错误,表示。但是,当我在标签中注释对容器组件的引用时,测试通过了。有人能帮忙吗?非常感谢你。 我正在使用react测试库在测试文件中呈现组件。

  • 我在使用带有样式化组件的s时遇到困难。当我尝试在下面的类方法中访问它们时,会出现以下错误: Edit.js:42未捕获类型错误:此…..包含的不是函数 我从这个问题中找到了密码 我到底做错了什么?