如何在类组件类型脚本中使用 useHistory() 钩子

Posted

技术标签:

【中文标题】如何在类组件类型脚本中使用 useHistory() 钩子【英文标题】:How to use useHistory() hook in Class Component Type Script 【发布时间】:2021-04-13 15:44:07 【问题描述】:

你好我正在尝试使用

this.history.push(
                    pathname: `/search-results`,
                    search: `$job$$location`
                  ) 

在我使用 type script 的类组件中。 但是,它给了我一个错误,即“横幅”类型上不存在属性“历史”。 TS2339

我可以看到其他功能组件的例子,你可以做const history = useHistory();并使用hook中的history.push。

如何在类组件中做同样的事情?

【问题讨论】:

【参考方案1】:

钩子并非设计用于基于类的组件。

但是,react-router 有其他方法来支持基于类的组件,例如 withRouter higher order component。

也就是说,如果可以,请使用功能组件和挂钩。它们是未来的 React 标准。

【讨论】:

我试图按照你发送给我的链接的语法,我目前收到错误“属性'历史'不存在于类型'只读和只读'" 没关系你必须定义 const history = this.props as any,我真的很讨厌 TS omg

以上是关于如何在类组件类型脚本中使用 useHistory() 钩子的主要内容,如果未能解决你的问题,请参考以下文章

如何正确使用 react-router-dom 中的 useHistory()?

在库中使用 React 路由器 - 无法使用 useHistory()

收到与反应挂钩 useHistory 相关的错误

React-Router:为啥react中未定义useHistory? [复制]

如何在点击时在 React 中重定向?

如何在类组件中使用 next.js 中的“useRouter()”?