【问题标题】:Why am I getting TypeError: Cannot read property 'push' of undefined react-router-dom为什么我收到 TypeError: Cannot read property 'push' of undefined react-router-dom
【发布时间】:2021-09-27 01:52:16
【问题描述】:

我只是在检查我在 redux 商店中是否有语言。如果有,我会将其保存在我的localStorage 中,如果没有,我想导航到组件调用MultiLanguage
我使用history 使用以下方法,但它显示 mw 错误。显示undefined 的推送是什么?对此有什么解决方案?

const history = useHistory();
  const language = store.getState().languages.selectedLangauge.language;
  console.log("language", language);
  if (language) {
    localStorage.setItem("language", language);
  } else {
    history.push("/multilanguage");
  }
  return (
    <div className="font-metropolis_regular">
      <Router>
        <Route path="/" exact component={Selection} />
        <Route path="/login" component={Login} />
        <Route path="/home" component={Homepage} />
        <Route path="/account" component={Account} />
        <Route path="/multilanguage" component={MultiLanguage} />
      </Router>
    </div>
  );

【问题讨论】:

标签: javascript reactjs react-router-dom


【解决方案1】:

原因很简单,正如错误所说,您的 useHistory 挂钩返回未定义。发生这种情况是因为这个钩子只能在由Router 包裹的组件内调用,因此决定可能会将其上移一级。 看看这个代码示例https://flaviocopes.com/react-router-uselocation-usehistory-undefined/

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 2021-08-20
    • 2022-01-21
    • 2023-02-22
    • 2017-08-19
    • 2019-08-13
    • 1970-01-01
    • 2020-05-10
    • 2021-10-20
    相关资源
    最近更新 更多