我正在用React.FC类型记录构建一些组件,今天我在尝试使用样式组件中的withTheme自定义组件注入样式组件支持时发现了这个类型记录错误:

看来withTheme HOC只接受React.ComponentType作为参数,但是组件是使用React.FC (Functional )构建的。
有没有办法将React.FC转换为React.ComponentType?
更新
完整的组成部分实现:
import React, { useEffect } from 'react'
import PropTypes from 'prop-types'
import { Reset, LoadingBarStyled, SpinnerContainer } from './Style'
import { withTheme } from 'styled-components'
import ScaleLoader from 'react-spinners/ScaleLoader'
export interface ILoadingBarComponent {
progress: number
appearance?: string
onFinish(finished: Promise<string>): void
}
const LoadingBarComponent: React.FC<ILoadingBarComponent> = ({
progress = 0,
appearance = 'default',
onFinish
}) => {
useEffect(() => {
if (progress >= 100 && onFinish) {
onFinish(
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('finished')
}, 800)
})
)
}
}, [progress, onFinish])
return (
<div className="loading-bar-component-module">
<Reset />
{progress > -1 && progress < 101 && (
<>
<LoadingBarStyled progress={progress} appearance={appearance} />
<SpinnerContainer progress={progress}>
<ScaleLoader height={10} />
</SpinnerContainer>
</>
)}
</div>
)
}
LoadingBarComponent.propTypes = {
progress: PropTypes.number.isRequired,
appearance: PropTypes.string,
onFinish: PropTypes.func.isRequired
}
export default withTheme(LoadingBarComponent)发布于 2019-10-24 13:46:56
您需要向组件道具接口添加一个theme支柱:
interface Theme {}
export interface ILoadingBarComponent {
progress: number
appearance?: string
onFinish(finished: Promise<string>): void
theme: Theme
}https://stackoverflow.com/questions/58542056
复制相似问题