- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将某种服务共享给嵌套在另一个组件中的组件,但出现未定义的错误。
'UserContext' is not defined no-undef
这是我的 App.js:
import logo from './logo.svg';
import './App.css';
import React, {createContext} from "react";
import {
BrowserRouter as Router,
Routes,
Route
} from "react-router-dom";
import TopPanel from "./components/topPanel/TopPanel";
import UserCtx from "./services/UserCtx";
function App() {
const UserContext = createContext({});
return (
<Router>
<UserContext.Provider value={new UserCtx()}>
<TopPanel/>
</UserContext.Provider>
<Routes>
...
</Routes>
</Router>
);
}
export default App;
在 TopPanel
组件内部有一个 Login
组件,它应该使用上下文:
import React, {useState, useContext} from "react";
function Login() {
const userCtx = useContext(UserContext);
...
}
export default Login;
但它显然没有得到传递。请问我做错了什么?它甚至看起来都不像传递给 1 级组件。
不认为它是相关的,但这是上下文对象:
import React from "react";
class UserCtx {
isLoggedIn;
token;
constructor() {
this.isLoggedIn = false;
}
logIn = (token) => {
console.log("LOGGING IN!");
this.isLoggedIn = true;
this.token = token;
}
}
export default UserCtx;
最佳答案
上下文的创建应该在组件之外,这行 const UserContext = createContext({});
应该在 App
组件之外,它应该将其导出:
export const UserContext = createContext({});
确保在 Login
中,在顶部导入 UserContext
,然后再执行您在那里的操作:
import React, {useState, useContext} from "react";
import {UserContext} from "../../App"; // use the correct path
function Login() {
const userCtx = useContext(UserContext);
...
}
export default Login;
关于javascript - 与嵌套组件共享上下文,未定义获取 UserContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72754746/
我正在尝试将某种服务共享给嵌套在另一个组件中的组件,但出现未定义的错误。 'UserContext' is not defined no-undef 这是我的 App.js: import logo
我有一个模型 UserB2b扩展自 User .我已使用 server.authEnabled 启用授权在引导脚本中,以便所有请求都通过 auth 中间件。 问题:每当我的 UserB2b 中有一个非
我正在尝试创建一个可供 React 应用程序中的所有类组件访问的 UserContext。我收到以下错误。 ReferenceError: Cannot access 'UserContext' be
如何在 beforeEach() 函数中为 Jasmine 的 userContext 上的属性集提供类型? 我的代码: beforeEach(() => { this.injector =
我面临一个奇怪的问题,即在单击工具菜单下的扩展和更新时收到一条消息“值不能为空。参数名称为 userContext”。 请让我知道此问题的解决方法是什么。谢谢你。 最佳答案 我有完全相同的问题。我从开
我需要读/写 ActiveDirectory 用户对象终端服务属性。我试过这个: PrincipalContext context = new PrincipalContext(ContextType
我收到错误消息 'Value cannot be null. Parameter name: userContext' 在Visual Studio 2017中尝试单击通知或从tools文件夹中打开扩
我发现几乎每个类( Controller 、 View 、HTML 帮助程序、服务等)我都需要当前登录的用户数据。所以我考虑创建一个“环境上下文”而不是直接注入(inject) IUserServic
我是一名优秀的程序员,十分优秀!