将道具传递给样式组件的 TypeScript 错误

Posted

技术标签:

【中文标题】将道具传递给样式组件的 TypeScript 错误【英文标题】:TypeScript error passing prop to styled-components 【发布时间】:2017-10-20 18:41:27 【问题描述】:

我很难解决这个 TypeScript 问题。

...message: 'Type ' show: boolean; children: Element; ' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<ThemedOuterStyledProps<htmlProps<HTMLDiv...'.
  Property 'show' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<ThemedOuterStyledProps<HTMLProps<HTMLDiv...'.'

我正在使用 React + 样式化组件 + TypeScript。如果我有这样的样式组件:

const Component = styled.div`
    opacity: $props => props.show ? 1 : 0
`

我的 React 组件看起来像这样:

const ReactComponent = (props:  appLoading: boolean ) => (
  <Component show=appLoading />
)

我对 TypeScript 很陌生,但我认为我需要在组件上定义 show prop?

【问题讨论】:

【参考方案1】:

show 属性指定类型的一种方法可能是这样 -

const Component = styled.div`
    opacity: $(props: show: boolean) => props.show ? 1 : 0
` 

刚刚在“props: show: boolean”中加了()

【讨论】:

感谢 Mukesh,它需要稍作调整。但它有效:) 我需要包装道具:show: boolean with () 是的,我总是忘记箭头函数 :)

以上是关于将道具传递给样式组件的 TypeScript 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Material UI 和 TypeScript 将自定义道具传递给样式化组件?

使用 graphql 将道具传递给高阶组件时出现 React-apollo Typescript 错误

使用 Typescript(TSX 文件)将道具传递给 React 中的子组件

将函数作为道具传递给 Typescript React 功能组件

如何将道具从调用组件传递给 HOC - React + Typescript

如何防止将道具传递给内部样式组件