【发布时间】:2020-06-20 12:36:03
【问题描述】:
在一个组件中,有一个 <Link>(来自 react-router-dom)在 state 属性中传递一个对象。
另一个名为ReceiverComponent 的组件正在正确接收该对象。但是,下面的代码抱怨消息:
类型“PoorMansUnknown”不可分配给类型“locationStateProps”。 类型“未定义”不可分配给类型 'locationStateProps'.ts(2322)
type locationStateProps = {
name: string;
}
function ReceiverComponent() {
const location = useLocation();
const myState: locationStateProps = location.state;
return (
<div>
{myState.name}
</div>
);
}
我需要以某种方式为状态提供一种类型,而不会出现此错误。如何进行?
【问题讨论】:
-
state可以未定义,因此会出现错误。如果您绝对确定它总是有一个值,您可以使用非空断言运算符:const myState: locationStateProps = location.state!; -
我不知道非空断言运算符。谢谢。
-
考虑将变量输入为
const myState: locationStateProps | undefined = ...,然后输入{myState?.name}或类似的东西,以防状态未定义 -
好的,这很有帮助。到目前为止,我一直在使用 jsx 进行开发,最近更改为 typescript 并习惯了它。所有的信息都是有帮助的。谢谢。
标签: reactjs typescript react-router react-router-dom