Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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 从react router dom属性升级版本4 useParams()后出现TypeScript错误';sumParams';不存在于类型';{}';_Javascript_Reactjs_Typescript_React Router Dom_React Dom - Fatal编程技术网

Javascript 从react router dom属性升级版本4 useParams()后出现TypeScript错误';sumParams';不存在于类型';{}';

Javascript 从react router dom属性升级版本4 useParams()后出现TypeScript错误';sumParams';不存在于类型';{}';,javascript,reactjs,typescript,react-router-dom,react-dom,Javascript,Reactjs,Typescript,React Router Dom,React Dom,升级到版本4后,我收到一个typeScript错误 在react router dom的useParams()中使用 “typescript”:“^4.0.2” 该项目运行良好,只有在升级后才会抛出错误useParams是通用的。您需要通过指定泛型参数的值来告诉typescript正在使用哪些参数 有几种方法可以解决这个问题 这是我最喜欢的方式 const { sumParams } = useParams<{ sumParams: string }>(); 然后在组件中 cons

升级到版本4后,我收到一个typeScript错误 在react router dom的useParams()中使用

“typescript”:“^4.0.2”


该项目运行良好,只有在升级后才会抛出错误

useParams
是通用的。您需要通过指定泛型参数的值来告诉typescript正在使用哪些参数

有几种方法可以解决这个问题

这是我最喜欢的方式

const { sumParams } = useParams<{ sumParams: string }>();
然后在组件中

const { sumParams } = useParams<ParamTypes>();
注意:这样您将无法将其设置为字符串

更多选项用于:


要使其像以前一样工作,只需添加“:any”

另一个选择是:

const { sumParams } = useParams() as { 
  sumParams: string;
}

您好@keemor我给了您一个投票,并在我的回答中引用了您的话我喜欢这种方法,谢谢。您知道TS版本之间发生了什么变化导致此错误吗?我在更改日志中找不到任何提示这将发生更改的内容。更新:我在npm上对typescript版本进行了二进制搜索,这在版本4.0.0-dev.20200624和版本4.0.0-dev.20200625之间开始成为一个问题。您可以在这里查看这些版本之间的差异:谢谢,这就是我所做的:const{sumParams}:any=useParams();到目前为止,我还没有看到放弃像JS这样优雅、动态的语言而使用复杂的TS的好处,但也许有一天我会得到它。。。
interface ParamTypes {
  sumParams: string;
}
const { sumParams } = useParams<ParamTypes>();
const { sumParams } : any = useParams();
const { sumParams } = useParams() as { 
  sumParams: string;
}
const { sumParams } : any = useParams();
const { sumParams } = useParams() as { 
  sumParams: string;
}