Reactjs 如何将泛型从函数传递到useState
我需要将从函数得到的generic传递给useState,因为它是状态的一部分。我该怎么做 示例代码:Reactjs 如何将泛型从函数传递到useState,reactjs,typescript,Reactjs,Typescript,我需要将从函数得到的generic传递给useState,因为它是状态的一部分。我该怎么做 示例代码: import React, { useState } from "react"; const DialogContext = React.createContext<TContext>({}); type TStatus = 'close' | 'success' | 'cancel' type TReturnContext<V> = { status: T
import React, { useState } from "react";
const DialogContext = React.createContext<TContext>({});
type TStatus = 'close' | 'success' | 'cancel'
type TReturnContext<V> = {
status: TStatus,
values: V
};
type TContext = {
open?: TOpenCallback
};
type TInstances = {
instanceName: string
};
type TProps = {
Layout: React.ElementType
config: {
[instanceName: string]: React.FC<null>
}
};
type TOpenCallback = <T, V>(instanceName: string, params: T) => Promise<Readonly<TReturnContext<V>>>;
export const Provider: React.FC<TProps> = ({ children, Layout, config }) => {
const [instances, setInstances] = useState<Array<TInstances>>([]);
const open: TOpenCallback = (instanceName, params) =>
new Promise(() => {
setInstances(prevInstances => [
...prevInstances,
{ instanceName, params }
]);
});
const context = {
open
};
const component = instances.map(({ instanceName, params }) => (
<Layout
key={instanceName}
instanceName={instanceName}
component={config[instanceName]}
// cancel={cancel}
// success={success}
// close={close}
params={params}
/>
));
return (
<DialogContext.Provider value={context}>
<>
{children}
{component}
</>
</DialogContext.Provider>
);
};
import React,{useState}来自“React”;
const DialogContext=React.createContext({});
键入TStatus='close'|'success'|'cancel'
类型TReturnContext={
状态:TStatus,
数值:V
};
类型TContext={
打开?:TOpenCallback
};
类型TInstances={
instanceName:字符串
};
类型TProps={
布局:React.ElementType
配置:{
[instanceName:string]:React.FC
}
};
键入TOpenCallback=(instanceName:string,params:T)=>Promise;
导出常量提供程序:React.FC=({子项,布局,配置})=>{
const[instances,setInstances]=useState
类型“TInstances”没有属性“params”,也没有字符串索引签名
这不是完整的示例,但当我使用open函数时,我会了解params类型,如何将其传递到useState generic?我无法复制该错误,并且该错误没有意义,这使我怀疑是否还有其他错误和编译器错误。请使用可以复制和粘贴的进入npx create react App的App.tsx
——键入脚本
App以复制问题。现在的示例是正确的