如何使用 Typescript 制作高阶 React 组件?
How do I make a higher order React component with Typescript?
我正在尝试使用 Typescript 制作高阶组件,但出现类型不匹配的问题。我完全剥离了它,所以它应该只是包装组件,但仍然出现错误:
import * as React from 'react';
export function createPage<Props extends {}, ComponentType extends React.ComponentType<Props>>(
Component: ComponentType
) {
return class WrappedComponent extends React.Component<Props> {
render() {
return <Component {...this.props}></Component>;
}
}
}
我得到的错误是:
Type 'Readonly & Readonly<{ children?: ReactNode; }>' is not assignable to type 'IntrinsicAttributes & LibraryManagedAttributes<ComponentType, PropsWithChildren>'.
看起来IntrinsicAttributes
什么都匹配不了,但是LibraryManagedAttributes
对我来说绝对是莫名其妙。
您只需要为 Props 提供通用参数
export function createPage<Props>(
Component: React.ComponentType<Props>
) {
return class WrappedComponent extends React.Component<Props> {
render() {
return <Component {...this.props}></Component>;
}
}
}
我正在尝试使用 Typescript 制作高阶组件,但出现类型不匹配的问题。我完全剥离了它,所以它应该只是包装组件,但仍然出现错误:
import * as React from 'react';
export function createPage<Props extends {}, ComponentType extends React.ComponentType<Props>>(
Component: ComponentType
) {
return class WrappedComponent extends React.Component<Props> {
render() {
return <Component {...this.props}></Component>;
}
}
}
我得到的错误是:
Type 'Readonly & Readonly<{ children?: ReactNode; }>' is not assignable to type 'IntrinsicAttributes & LibraryManagedAttributes<ComponentType, PropsWithChildren>'.
看起来IntrinsicAttributes
什么都匹配不了,但是LibraryManagedAttributes
对我来说绝对是莫名其妙。
您只需要为 Props 提供通用参数
export function createPage<Props>(
Component: React.ComponentType<Props>
) {
return class WrappedComponent extends React.Component<Props> {
render() {
return <Component {...this.props}></Component>;
}
}
}