reactjs 如何将prop类型注入到由hoc Package 的组件中

g6baxovj  于 2023-03-17  发布在  React
关注(0)|答案(1)|浏览(124)

我有一个像这样的HOC

import React, {useEffect, useMemo, useState} from 'react'

interface WindowSize {
    width: number,
    height: number
}

export function WithWindowSize <T>(Component: React.ComponentType<T>) {
    return function WithComponent(props: T) {
        const [windowSize, setWindowSize] = useState({} as WindowSize)

        useEffect(() => {
            ...
        }, [])

        return <Component
            {...props}
            windowSize={windowSize}/>
    }
}

export default WithWindowSize;

现在我想使用这个HOC

interface FooProps {
    headline: string,
    value: string | number,
}

const Foo = ({headline, value, windowSize}: FoooProps & WindowSize) => {
    return ...
}

export default WithWindowSize(Foo);

这给了我
类型“FooProps & WindowsSize”上不存在属性“windowSize”。
如何将prop类型WindowSize注入到Foo中?我认为最好的方法是在HOC中进行,这样我就不必每次使用WithWindowSize Package 东西时都进行此操作。

nnt7mjpx

nnt7mjpx1#

我只想将windowSize作为可选属性包含在FooProps接口中,因为Foo(或任何其他组件)无法知道它将在HOC中使用

interface WindowSize {
    width: number,
    height: number
}

interface FooProps {
    headline: string,
    value: string | number,
    windowSize?: WindowSize
}

const Foo = ({headline, value, windowSize}: FooProps) => {
    return ...
}

相关问题