为了账号安全,请及时绑定邮箱和手机立即绑定

带有主题 HOC 的样式组件不适用于 React.FC 类型

带有主题 HOC 的样式组件不适用于 React.FC 类型

狐的传说 2021-12-02 16:00:34
我正在使用 React.FC 打字稿构建一些组件,今天我在尝试使用样式组件中的withThemeHOC注入样式组件道具时发现了这个打字稿错误:似乎withThemeHOC 只接受React.ComponentType作为参数,但组件是使用React.FC(Functional Component)构建的。有没有办法投射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)
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

你需要在theme你的组件 props 接口中添加一个prop:


interface Theme {}


export interface ILoadingBarComponent {

  progress: number

  appearance?: string

  onFinish(finished: Promise<string>): void

  theme: Theme

}


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信