Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用高阶组件对静态进行反应_Reactjs_Typescript_Higher Order Components - Fatal编程技术网

Reactjs 使用高阶组件对静态进行反应

Reactjs 使用高阶组件对静态进行反应,reactjs,typescript,higher-order-components,Reactjs,Typescript,Higher Order Components,我正在尝试将我的项目从JavaScript移植到TypeScript。我有一个高阶的高阶组件,名为highstatics,它可以接收HOC并提升包装组件的静态 import hoistNonReactStatics from 'hoist-non-react-statics'; export const hoistStatics = higherOrderComponent => BaseComponent => { const NewComponent = higherOrd

我正在尝试将我的项目从JavaScript移植到TypeScript。我有一个高阶的高阶组件,名为
highstatics
,它可以接收HOC并提升包装组件的静态

import hoistNonReactStatics from 'hoist-non-react-statics';

export const hoistStatics = higherOrderComponent => BaseComponent => {
  const NewComponent = higherOrderComponent(BaseComponent);
  hoistNonReactStatics(NewComponent, BaseComponent);
  return NewComponent;
};

我的问题是,我不知道怎么打这个。是否有方法键入通用的高阶组件?在这种情况下,我需要如何处理道具?

您需要键入HOC,然后使用它来键入hooc

import hoistNonReactStatics from 'hoist-non-react-statics';

type HOC<InnerProps, OuterProps = InnerProps> = (
  Component: React.ComponentType<InnerProps>,
) => React.ComponentType<OuterProps>;

const hoistStatics = <InnerProps, OuterProps>(
  higherOrderComponent: HOC<InnerProps, OuterProps>,
): HOC<InnerProps, OuterProps> => (
  BaseComponent: React.ComponentType<InnerProps>,
) => {
  const NewComponent = higherOrderComponent(BaseComponent);
  hoistNonReactStatics(NewComponent, BaseComponent);
  return NewComponent;
};

export default hoistStatics;
从“提升机非反应静力学”导入提升机非反应静力学;
类型HOC=(
组件:React.ComponentType,
)=>React.ComponentType;
常数静力学=(
高级命令组件:HOC,
):HOC=>(
BaseComponent:React.ComponentType,
) => {
const NewComponent=高级有序组件(BaseComponent);
提升机非反应器(新组件、基本组件);
返回新组件;
};
导出默认静态数据;

您需要键入HOC,然后使用它来键入HOHOC

import hoistNonReactStatics from 'hoist-non-react-statics';

type HOC<InnerProps, OuterProps = InnerProps> = (
  Component: React.ComponentType<InnerProps>,
) => React.ComponentType<OuterProps>;

const hoistStatics = <InnerProps, OuterProps>(
  higherOrderComponent: HOC<InnerProps, OuterProps>,
): HOC<InnerProps, OuterProps> => (
  BaseComponent: React.ComponentType<InnerProps>,
) => {
  const NewComponent = higherOrderComponent(BaseComponent);
  hoistNonReactStatics(NewComponent, BaseComponent);
  return NewComponent;
};

export default hoistStatics;
从“提升机非反应静力学”导入提升机非反应静力学;
类型HOC=(
组件:React.ComponentType,
)=>React.ComponentType;
常数静力学=(
高级命令组件:HOC,
):HOC=>(
BaseComponent:React.ComponentType,
) => {
const NewComponent=高级有序组件(BaseComponent);
提升机非反应器(新组件、基本组件);
返回新组件;
};
导出默认静态数据;