![](/img/trans.png)
[英]'react-router-dom' does not contain an export named 'useParams'
[英]TypeScript error after upgrading version 4 useParams () from react-router-dom Property 'sumParams' does not exist on type '{}'
升級到版本 4 后出現 typeScript 錯誤 用於來自 react-router-dom 的 useParams ()
"typescript": "^4.0.2"
import { useParams } from 'react-router-dom';
const { sumParams } = useParams();
Property 'sumParams' does not exist on type '{}'.
該項目運行良好,只有在升級后才會拋出錯誤
useParams
是通用的。 您需要通過指定泛型的值來告訴打字稿您正在使用哪些參數
有幾種方法可以解決這個問題
這是我最喜歡的方式
const { sumParams } = useParams<{ sumParams: string }>();
但是還有更多的方法 (:
或者
interface ParamTypes {
sumParams: string;
}
然后在你的組件中
const { sumParams } = useParams<ParamTypes>();
或者
添加沒有接口的任何類型
const { sumParams } : any = useParams();
注意:這樣你將無法將其設置為字符串
或者
keemor 的更多選擇:
const { sumParams } = useParams() as {
sumParams: string;
}
另一種選擇是:
const { sumParams } = useParams() as {
sumParams: string;
}
要使它像以前一樣運行,只需添加“:any”
const { sumParams } : any = useParams();
type ParamTypes {
sumParams: string;
}
const { sumParams } = useParams<ParamTypes>()
這將是一個干凈的方法
如果您已經在文件中導入了params
,您還可以從useRouteMatch
訪問params
const curRoute = useRouteMatch();
// @ts-ignore
let sumParams = curRoute.params.sumParams
對於較新版本的路由器,通用從 object 更改為字符串聯合。
const { param1, param2 } = useParams<'param1' | 'param2'>();
useParams
類型中的當前react-router
類型如下所示:
export declare function useParams<Key extends string = string>(): Readonly<Params<Key>>;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.