访问未定义的路径或错误页面会导致Next.js进行硬刷新,从而导致我的上下文回到默认状态(即存储在userProfile状态变量中的值变为null)
我有一个布局,使用{stucture:Sidebar和main},在Sidebar组件中,我显示用户电子邮件,我从上下文钩子作为状态变量获取。
但是,当我点击未定义的路径或在URL中手动输入时,我会抛出一个自定义错误页面,返回到索引页面('/'),但由于这个原因,我失去了我的状态回到null(上下文)。
我的上下文文件如下所示
import { createContext, useState, useContext } from 'react';
const UserContext = createContext();
export function UserProvider({ children }) {
const [userProfile, setUserProfile] = useState(null);
return (
<UserContext.Provider value={{ userProfile, setUserProfile }}>
{children}
</UserContext.Provider>
);
}
export function useUserContext() {
return useContext(UserContext);
}
我在登录页面的登录处理程序中设置我的状态(成功时)。
是否有任何解决方法,或者我应该使用本地存储
目前,当他回到索引页面时,我会再次获取用户配置文件。
我认为本地存储可能是一个更好的选择。
Your Answer
1 个回答
我通过只在上下文文件中设置状态,而不在任何其他地方设置状态来解决了我的问题。简而言之,我在context.js文件中获取用户的个人资料数据,并在那里设置状态,这样可以在任何地方使用。如果有人遇到相同的问题,请提到我!
我的context.js文件如下所示
import { createContext, useState, useEffect, useContext } from 'react';
const UserContext = createContext();
export function UserProvider({ children }) {
const [userProfile, setUserProfile] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
const fetchUserProfile = async () => {
try {
const res = await fetch(process.env.NEXT_PUBLIC_API_DOMAIN + '/userProfile');
const userData = await res.json();
setUserProfile(userData);
setLoading(false);
} catch (error) {
console.error("Error fetching user profile:", error);
setLoading(false);
}
};
fetchUserProfile();
}, []);
return (
{children}
);
}
export function useUserContext() {
return useContext(UserContext);
}
Hot Questions
function_exists()无法判定自定义函数
2024-04-29 11:01:01
google 浏览器 手机版显示的怎么实现
2024-04-23 00:22:19
子窗口操作父窗口,输出没反应
2024-04-19 15:37:47
父窗口没有输出
2024-04-18 23:52:34
关于CSS思维导图的课件在哪?
2024-04-16 10:10:18
Hot Tools
vc9-vc14(32+64位)运行库合集(链接在下方)
phpStudy安装所需运行库集合下载
VC9 32位
VC9 32位 phpstudy集成安装环境运行库
php程序员工具箱完整版
程序员工具箱 v1.0 php集成环境
VC11 32位
VC11 32位 phpstudy集成安装环境运行库
SublimeText3汉化版
中文版,非常好用
热门话题
抖音等级价目表1-75
20337
7
20337
7
wifi显示无ip分配
13531
4
13531
4
虚拟手机号接收验证码
11851
4
11851
4
gmail邮箱登陆入口在哪里
8836
17
8836
17
windows安全中心怎么关闭
8420
7
8420
7
热门文章
2025年加密货币市场十大趋势预测:下一个风口在哪里?
2025-11-07
By DDD
币圈土狗项目如何识别?避免归零币的陷阱与风险预警
2025-11-07
By DDD
解决CSS @media 查询优先级与规则覆盖问题的教程
2025-11-07
By DDD
win10字体安装后在软件里找不到怎么办_win10字体安装与识别方法
2025-11-07
By DDD
铁路12306支付失败订单还在吗_铁路12306支付失败订单处理方法
2025-11-07
By DDD





