Yoe*_*oel 52 javascript typescript reactjs react-dom react-router-dom
从 react-router-dom 升级到 useParams () 中使用的版本 4 后,出现 typeScript 错误
"typescript": "^4.0.2"
import { useParams } from 'react-router-dom';
const { sumParams } = useParams();
Run Code Online (Sandbox Code Playgroud)
Property 'sumParams' does not exist on type '{}'.
Run Code Online (Sandbox Code Playgroud)
该项目运行良好,只有在升级后才会引发错误
Yoe*_*oel 128
useParams是通用的。您需要通过指定泛型的值来告诉打字稿您正在使用哪些参数
有几种方法可以解决这个问题
这是我最喜欢的方式
const { sumParams } = useParams<{ sumParams: string }>();
Run Code Online (Sandbox Code Playgroud)
但是还有更多的方法 (:
或者
interface ParamTypes {
sumParams: string;
}
Run Code Online (Sandbox Code Playgroud)
然后在你的组件中
const { sumParams } = useParams<ParamTypes>();
Run Code Online (Sandbox Code Playgroud)
或者
添加没有接口的任何类型
const { sumParams } : any = useParams();
Run Code Online (Sandbox Code Playgroud)
注意:这样你将无法将其设置为字符串
或者
keemor 的更多选择:
const { sumParams } = useParams() as {
sumParams: string;
}
Run Code Online (Sandbox Code Playgroud)
kee*_*mor 10
另一种选择是:
const { sumParams } = useParams() as {
sumParams: string;
}
Run Code Online (Sandbox Code Playgroud)
要使它像以前一样运行,只需添加“:any”
const { sumParams } : any = useParams();
Run Code Online (Sandbox Code Playgroud)