Javascript 如何正确使用带有TypeScript&;的ReactJS Reach路由器;埃斯林?
我试图在一个使用TypeScript和ESLint的项目中使用Reach-Router实现仅客户端路由。这是我的初步实施: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/
//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 />