接口 DOMRouterOpts 未导出

问题描述 投票:0回答:1

尝试在 React 项目中使用 TypeScript 时遇到

import type
问题
react-router-dom:6.22.3

VSCode 找不到接口 
import { Route, createBrowserRouter, createRoutesFromElements } from "react-router-dom"; import type { RouteObject } from "react-router-dom"; import Root from "@src/routes/Root"; import Home from "@src/routes/Home"; const routes: RouteObject[] = createRoutesFromElements( <Route path="/" element={<Root />}> <Route index element={<Home />} /> </Route> ); const opts: DOMRouterOpts = export const router: Router = createBrowserRouter(routes, opts);

和类型

DOMRouterOpts
(从函数
Router
返回的类型)。
我尝试从

createBrowserRouter

安装

@types/react-router-dom
,但最新版本是5.3.3,不适用于我当前的版本6.22.3。
有谁知道如何解决这个问题吗?

typescript react-router-dom
1个回答
0
投票

npm接口

未导出。

DOMRouteOpts
如果您明确需要,您可以自己定义接口:

interface DOMRouterOpts { basename?: string; future?: Partial<Omit<RouterFutureConfig, "v7_prependBasename">>; hydrationData?: HydrationState; unstable_dataStrategy?: unstable_DataStrategyFunction; window?: Window; }

import type {
  unstable_DataStrategyFunction,
  FutureConfig as RouterFutureConfig,
  HydrationState,
} from '@remix-router';

export interface DOMRouterOpts {
  basename?: string;
  future?: Partial<Omit<RouterFutureConfig, "v7_prependBasename">>;
  hydrationData?: HydrationState;
  unstable_dataStrategy?: unstable_DataStrategyFunction;
  window?: Window;
}
这可能有点矫枉过正,因为 
import { createBrowserRouter, createRoutesFromElements, Route, } from "react-router-dom"; import type { RouteObject } from "react-router-dom"; import type { Router as RemixRouter } from '@remix-router'; import type { DOMRouterOpts } from "@types/DOMRouterOpts"; import Root from "@src/routes/Root"; import Home from "@src/routes/Home"; const routes: RouteObject[] = createRoutesFromElements( <Route path="/" element={<Root />}> <Route index element={<Home />} /> </Route> ); const opts: DOMRouterOpts = { // ... whatever options you are trying to specify ... }; export const router: RemixRouter = createBrowserRouter(routes, opts);

createRoutesFromElements
是用 Typescript 编写的,并且知道它们返回和消耗什么。路线选项
基本上
只需要是与createBrowserRouter形状匹配的对象即可。以下内容可能对您同样有效。
DOMRouterOpts

© www.soinside.com 2019 - 2024. All rights reserved.