Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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/0/mercurial/2.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
Javascript 如何正确使用带有TypeScript&;的ReactJS Reach路由器;埃斯林?_Javascript_Reactjs_Typescript_Eslint_Reach Router - Fatal编程技术网

Javascript 如何正确使用带有TypeScript&;的ReactJS Reach路由器;埃斯林?

Javascript 如何正确使用带有TypeScript&;的ReactJS Reach路由器;埃斯林?,javascript,reactjs,typescript,eslint,reach-router,Javascript,Reactjs,Typescript,Eslint,Reach Router,我试图在一个使用TypeScript和ESLint的项目中使用Reach-Router实现仅客户端路由。这是我的初步实施: //src/pages/app/[…].tsx 从'@reach/Router'导入{Router,Redirect,useLocation}; 从“React”导入*作为React; 从“../../components/BrowseMain”导入BrowseMain; 从“../../components/Layout”导入布局; 从“../../components/

我试图在一个使用TypeScript和ESLint的项目中使用Reach-Router实现仅客户端路由。这是我的初步实施:

//src/pages/app/[…].tsx
从'@reach/Router'导入{Router,Redirect,useLocation};
从“React”导入*作为React;
从“../../components/BrowseMain”导入BrowseMain;
从“../../components/Layout”导入布局;
从“../../components/UploadMain”导入UploadMain;
从“../../styles/[…]”module.scss”导入*作为样式;
常量索引页=()=>{
const currLocation=useLocation();
返回(
{['/'、'/browse'、'/browse/'].map((路径)=>)}
{['/upload','/upload/'].map((路径)=>)}
{/*重定向404*/}
);
};
导出默认索引扩展;
//src/components/BrowseMain.tsx
从“React”导入*作为React;
导入“../styles/BrowseMain.module.scss”;
从“/Main”导入Main;
const BrowseMain=()=>浏览;
导出默认浏览器名;
//UploadMain与BrowseMain类似,因此它们在这里面临相同的问题。
//src/components/Main.tsx
从“React”导入*作为React;
导入“../styles/Main.module.scss”;
类型MainProps={
孩子们:弦,
};
const Main=({children}:MainProps)=>{children};
导出默认主;
此时,TypeScript在
[…]中的
BrowseMain
UploadMain
路由上抛出以下错误。tsx

TS2322:类型“{key:string;path:string;}”不可分配给类型“IntrinsicattAttributes”。类型“IntrinsicatAttributes”上不存在属性“path”

根据Reach Router的文档,我做了以下更改:

从'@reach/router'导入{RouteComponentProps};
从“React”导入*作为React;
导入“../styles/BrowseMain.module.scss”;
从“/Main”导入Main;
constbrowsemain=(props:RouteComponentProps)=>浏览;
导出默认浏览器名;
这解决了以前的脱毛错误,但提出了两个新错误:

TS6133:声明了“props”,但从未读取其值

ESLint:“props”已定义但从未使用。(@typescript ESLint/无未使用的变量)

在这一点上,我被卡住了。我尝试了两种不同的方法,但它们都会引起起毛错误:

//ESLint:意外的空对象模式。(无空模式)
const BrowseMain=({}:RouteComponentProps)=>(
//ESLint:“389;”已定义但从未使用。(@typescript ESLint/无未使用的变量)
const BrowseMain=(uu:RouteComponentProps)=>(

如果你现在这样做,我觉得我很糟糕,如果你现在不这样做,我觉得我很糟糕。为不使用的道具声明显式类型的正确方法是什么?

你可以使用泛型指定道具。在你的情况下,它会像:

const BrowserMain: React.FC<RouteComponentProps> = () => <Main>Browse</Main
const BrowserMain:React.FC=()=>Browse
查看此资源:

type BrowserMainFC = {
  (props: RouteComponentProps): JSX.Element
}

const BrowseMain: BrowserMainFC = () => <div />