Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 将属性附加到使用React.forwardRef包装的功能组件_Reactjs_Typescript - Fatal编程技术网

Reactjs 将属性附加到使用React.forwardRef包装的功能组件

Reactjs 将属性附加到使用React.forwardRef包装的功能组件,reactjs,typescript,Reactjs,Typescript,我用React.forwardRef包装了一个组件,碰巧它也是一个复合组件 我不知道我该如何维护 Form.Item = FormItem; 当表单组件函数被forwardRef包装时 const Form = React.forwardRef((props, ref) => { return <form></form>}); const Form=React.forwardRef((props,ref)=>{return}); Typescript给了我一

我用
React.forwardRef
包装了一个组件,碰巧它也是一个复合组件

我不知道我该如何维护

Form.Item  = FormItem;
当表单组件函数被
forwardRef
包装时

const Form = React.forwardRef((props, ref) => { return <form></form>});
const Form=React.forwardRef((props,ref)=>{return});
Typescript给了我一个错误(严格地)说

类型“ForwardRefExoticComponent>”上不存在属性“Item”。ts(2339)


只是为了更清楚地说明解决方案,因为它在一个外部站点上(归功于原作者,谢谢@Antoan Elenkov)

导出接口道具={
…你的支持者;
};
导出接口ComponendComponent扩展React.ForwardRefExoticComponent{
您的静态函数或某些小部件:()=>无效;
}
常量组件=React.forwardRef((props,ref)=>(
))作为组成部分;
Component.yourstaticfunctionorsomethingliekethat=()=>{};

能否修改
表单
组件?或者它来自第三方库?我可以修改我的表单组件。这是怎么回事?它似乎是相关的。谢谢看看并解决你的问题。
export interface Props = {
   ...yourPropsHere;
};

export interface CompoundedComponent extends React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLInputElement>> {
   yourStaticFunctionOrSomethingLikeThat: () => void;
}

const Component = React.forwardRef<HTMLInputElement, Props>((props, ref) => (
    <input ref={ref} {...props} />
)) as CompoundedComponent;

Component.yourStaticFunctionOrSomethingLikeThat = () => {};