我正在使用react Redux实现两种不同类型用户登录。这是我的登录方法:
export const login = (credentials) => (dispatch) =>
api.user.login(credentials).then(user => {
localStorage.userJWT = user.token;
localStorage.userEmail = user.email;
localStorage.userId = user.id;
localStorage.surname = user.surname;
localStorage.type = user.type;
dispatch(userLoggedIn(user));
});
我做了一些第二类用户无法访问的安全路由。因此,如果返回变量surname
,我将为该用户定义特定的路由。
如果返回type
html" target="_blank">变量,它将正确显示链接和redux存储中的所有内容。但是,如果我重新加载页面,那么它会自动将变量type
更改为undefined surname
。
这就是我试图保存redux状态存储的地方,即使我重新加载页面。const store=createStore(rootReducer,composeWithDevTools(applyMiddleware(thunk)));
if(localStorage.userJWT && localStorage.userEmail && localStorage.userId && localStorage.type){
const user = { token: localStorage.userJWT, email: localStorage.userEmail, id: localStorage.userId, type: localStorage.type};
store.dispatch(userLoggedIn(user));
}
if(localStorage.userJWT && localStorage.userEmail && localStorage.userId && localStorage.surname){
const user = { token: localStorage.userJWT, email: localStorage.userEmail, id: localStorage.userId, surname: localStorage.surname};
store.dispatch(userLoggedIn(user));
}
你能告诉我为什么它不是按照我的if声明。提前谢谢你。
重新加载时重新初始化还原存储/状态。您可以将身份验证信息保存在本地存储中,然后将其取出用作初始状态。这样,即使在重新加载时,您的Redux状态也将始终拥有该身份验证信息。
function reducer (state = initState(), action) {
return state
}
function initState () {
return {
token: localStorage.userJWT,
email: localStorage.userEmail,
id: localStorage.userId,
surname: localStorage.surname
}
}
或者,如果您希望在重新加载时保持整个Redux状态,您可以尝试实现一些这样做的包,例如Redux-Persist。
我正在使用React Service Worker脱机插件为网站创建一个具有持久缓存的Service Worker。 我想告诉用户什么时候cach中存储了新版本,并建议刷新页面,但我不知道如何引用服务工作以及应该听什么事件(服务工作由npm“离线插件”自动创建)。 今天的标准流量: 网站管理员发布网站(V1) 用户访问网站 他查看网站(V1),而服务人员将页面存储在持久缓存中 网站管理员发布新版本
问题内容: 我从数据库获取数据并将其显示在div中…我要做的是单击链接时应更改div的内容 一种选择是通过URL将参数传递给自身并重新加载页面… 我需要这样做而 无需重新加载\刷新 … 目的是当我单击任何链接时,div和php变量的内容无需刷新即可更新....这样 用户可以看到新数据 ,然后如果执行某些查询,它将在新变量上 ps我知道它将需要一些AJAX,但我不知道AJAX ..所以请以我可以学习
我想重新加载页面。我该怎么做?
演示视频:https://www.youtube.com/watch?v=UBfnvx6jC_A 我学习了Udacity的离线Web应用程序课程,以便让我的应用程序离线工作。这是我的密码: 主要的js 服务人员。js 当我处于一个安装了服务人员并处于活动状态,并且缓存了我所有的东西的状态时,就会出现问题。当我打开开发工具并在Chrome中签入“重新加载时更新”时,如果我重新加载: 页面看起来相同,
问题内容: 我将如何更新每两秒钟在服务器上更新一次的映像,而无需用户按下刷新按钮,我的第一个猜测是ajax,但我之前从未真正使用过它。有人能指出我正确的方向吗? 编辑:忘记提及图像是由perl脚本生成的.gif-尝试通过url抓取它返回脚本 问题答案: 您的Perl脚本似乎有问题。尝试通过URL访问图像应该仍然返回图像。它应该返回二进制数据而不是脚本。您还应该将响应的Content- type标头
问题内容: 我一直在看这些页面(1,2,3)。我基本上想更改自己的,但是我不想重新加载页面。 我目前在页面上,当我单击按钮并使URL变为时,我想进入编辑模式。 我的状态很简单,所以没有必要重新加载整个页面。但是,我确实希望and和or 进行更改,以便如果用户刷新页面,则页面将以编辑模式启动。 我能做什么? 问题答案: 对于此问题,您可以仅创建既不具有也不具有的子状态,并在正常情况下向前移动: 这里