- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我自己的代码中,我尝试使用 react-router 的 useHistory
通过将其添加到导入中:
import {BrowserRouter as Router, Link, Route, Switch, useHistory} from "react-router-dom";
App()
上用它定义一个变量功能:
let history = useHistory();
TypeError: useContext(...) is undefined
hooks.js
,具体线路是:
return useContext(Context).history;
import React from "react";
import invariant from "tiny-invariant";
import Context from "./RouterContext.js";
import matchPath from "./matchPath.js";
const useContext = React.useContext;
export function useHistory() {
if (__DEV__) {
invariant(
typeof useContext === "function",
"You must use React >= 16.8 in order to use useHistory()"
);
}
return useContext(Context).history;
}
export function useLocation() {
if (__DEV__) {
invariant(
typeof useContext === "function",
"You must use React >= 16.8 in order to use useLocation()"
);
}
return useContext(Context).location;
}
export function useParams() {
if (__DEV__) {
invariant(
typeof useContext === "function",
"You must use React >= 16.8 in order to use useParams()"
);
}
const match = useContext(Context).match;
return match ? match.params : {};
}
export function useRouteMatch(path) {
if (__DEV__) {
invariant(
typeof useContext === "function",
"You must use React >= 16.8 in order to use useRouteMatch()"
);
}
return path
? matchPath(useLocation().pathname, path)
: useContext(Context).match;
}
React.useContext
在我自己的代码上,它是定义的,它是一个函数。
最佳答案
我认为您应该使用 BrowserRouter(作为路由器)将您的应用程序包装在 index.js 中,然后在您的应用程序中定义交换机和路由。因为您不能在使用 BrowserRouter 的同一文件中使用 useHistory 或 useLocation。
因此,使用 BrowserRouter 包装器上一层。
关于reactjs - 使用 useHistory 时,react-router 抛出 TypeError : useContext(. ..) 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61723157/
使用 React 功能组件和 Typescript,使用 useHistory hook 和 RouteComponentProps (react router v5.1) 有什么区别吗? 使用 Ro
当按下主页按钮时,我想将其重定向到主页“/”。但我收到此错误。我能做什么 ? : import { Route, useHistory } from 'react-router-dom/cjs/rea
我正在使用react-router-dom和redux。我在调度后使用history.push(“/”),但它显示错误。我希望用户在成功身份验证后导航到“/”(使用 GOOGLE) exp
我正在使用react-router-dom和redux。我在调度后使用history.push(“/”),但它显示错误。我希望用户在成功身份验证后导航到“/”(使用 GOOGLE) exp
我正在做一个谷歌克隆(迷你项目),因为我需要从 react-router-dom 导入 useHistory。 我已按照以下步骤操作: 第 1 步:npm install --save react-r
我正在使用 react-router-dom v6.0.0-beta.0 和 reac-redux 7.2.2 并想通过使用 useState 钩子(Hook)来编辑状态值,但是当我单击 EditIc
您好,我正在尝试使用 this.history.push({ pathname: `/search-results`,
我正在尝试使用 usehistory Hook 将注册功能重定向到 react 主页当我运行我的代码时,它显示这样的错误:: export 'useHistory' (imported as 'use
我正在尝试使用 usehistory Hook 将注册功能重定向到 react 主页当我运行我的代码时,它显示这样的错误:: export 'useHistory' (imported as 'use
在 react-router-dom v 5.2.0 上,useHistory 的导入返回“undefined”(即使在 console.log() 中) 基本上,我正在尝试构建一个选项菜单导航栏,让
使用此代码: import { Link, useHistory } from "react-router-dom"; ... const history = useHistory(); ... hi
我已经实现了 useHistory() 与我在下面实现的相同,以前我没有收到任何错误,但在这个组件中我收到了一个错误 Line 6:18: React Hook "useHistory" is cal
我有一个包含多个应用程序和库的 monorepo,效果非常好(基于 yarn )。我最近做了一些重构,并确定了一个我想在我的“公共(public)”库中“外包”的公共(public)组件。这包含一个使
我正在制作一个类似于应用程序的 CRUD 博客,当我发布或编辑博客时,我使用 history.push() 重定向用户,但是当用户被重定向时,如果我刷新页面,信息仍然是旧的,内容被更新.在过去的一天里
我想在我的 react 应用程序中集成一个 AI 语音助手 Alan AI 所以基本上想使用语音命令重定向页面。 但问题是,我想使用 useHistory 钩子(Hook)的 push 方法来更改页面
我在React Router v5.1.2中使用TypeScript使用UseHistory钩子(Hook)?运行单元测试时,我遇到了问题。 TypeError: Cannot read proper
我得到的错误是 Cannot read property 'history' of undefined .我已正确导入 useHistory()来自 react-router-dom 的钩子(Hook
这个问题在这里已经有了答案: Cannot read property 'history' of undefined (useHistory hook of React Router 5) (7 个回
使用方法useHistory()正确吗?我无法从一个 react 组件过渡到另一个。 根据 React 文档和 Stack Overflow 上的说明,我无法从 App.js 过渡到 MyCompon
我正在尝试从“react-router-dom”导入 useHistory,但是,我收到此错误:导入错误:“useHistory”未从“react-router-dom”导出。 我也检查了其他答案,例
我是一名优秀的程序员,十分优秀!