reactjs TS2540:无法分配给“href”,因为它是只读属性

dddzy1tm  于 2023-03-12  发布在  React
关注(0)|答案(2)|浏览(166)

出于某种原因,在我的React应用程序中,以下代码使用typescript loader(ts-loader)在Webpack中触发了一个编译错误:

handleEdit(): void {
    window.location.href = `/edit/${this.props.entry.id}`;
}

TS 2540:无法分配给“href”,因为它是只读属性。
我怀疑这是我的环境中的某种奇怪的人工制品。我有这样的环境:
“React”:“^17.0.1”网络包:5.61.0网络包-客户端:4.9.1网络包开发服务器4.11.1“ts加载程序”:“^9.2.6”,“ typescript ”:“^4.4.4”,

rwqw0loc

rwqw0loc1#

使用window.location.assign. from here
窗口.位置.分配属性:

  • assign函数类似于href属性,因为它也用于导航到新的URL。
  • 然而,assign方法并不显示当前位置,它只用于转到一个新位置。
  • 与replace方法不同,assign方法向历史记录中添加一条新记录(这样,当用户单击“Back”按钮时,他/她就可以返回到当前页面)。
  • 但是,与其更新href属性,调用函数被认为更安全,可读性更强。
  • assign()方法也优于href,因为它允许用户模拟函数并在测试时检查URL输入参数。
window.location.assign(`/edit/${this.props.entry.id}`)
nlejzf6q

nlejzf6q2#

我一直没有想出答案,我的变通方法是使用react-dom-router,并将window.location.href = ...的所有示例改为reload(...),这样就解决了问题。

相关问题