我有一个authentication.reducer.js
与:
export default function(state = initialState, action ){
switch(action.type) {
case SET_CURRENT_USER:
return {
...state,
isAuthenticated: !isEmpty(action.payload),
user: action.payload
}
default:
return state;
}}
以及我的带有useReducer钩子的提供者上下文。以及一个useEffect钩子,用于调度操作“setCurrentUser”,并在客户端登录时将“isAuthenticated”设置为true。
import authReducer from "./reducers/authentication.reducer";
...
const [stateUser, dispatch] = useReducer(authReducer, {
isAuthenticated: false,
user: {}
});
useEffect(()=>{
if (localStorage.jwt) {
const decoded = localStorage.jwt;
dispatch(setCurrentUser(decoded));
}
},[])
我放了一个控制台。在我的组件中记录(stateUser.isAuthenticated),这将显示“false”(初始值),然后显示“true”(分派)
我需要将状态(stateUser.isAuthenticated)传递给其他子组件,但不需要传递初始值(“false”)。
我有一个仪表板组件(仅用于登录的用户),在我的useEffect中,我需要执行以下操作:
if(!context.stateUser.isAuthenticated) {
props.history.push('/login');
}
在我的登录中:
if(context.stateUser.isAuthenticated) {
props.history.push('/');
}
这很有效。如果我已登录并转到“/”即可,如果我转到“/”登录,则会重定向到“/”。
但问题是重新渲染在调度和用户减少。状态去:假-
如何防止这种影响?/-
我的建议是将isAuthenticated
设置为null
以启动,并且仅在状态显式设置为true或false时调用历史函数,如下所示:
if (context.stateUser.isAuthenticated === false) {
props.history.push('/login');
}
if (context.stateUser.isAuthenticated === true) {
props.history.push('/');
}
确保使用三重等于使比较成为严格的比较。
这有帮助吗?
编辑
如果您要这样做,您将需要调用setMONtUser
,即使没有用户登录。
useEffect(()=>{
const decoded = localStorage.jwt ? localStorage.jwt : "";
dispatch(setCurrentUser(decoded));
},[])
问题内容: 我有一个将用户1的位置发送给用户2并将用户2的位置发送给用户1的代码。用户1的位置完美地发送给了用户2,用户2甚至向用户1发送了一条消息,但是它发送的位置是用户1的位置,而不是他(用户2)的位置。 这是我的代码: 谁能告诉我我在哪里做错了? pastebin.com/53ZJH3iN这是答复从用户1收到的短信的文件。与其发送用户2的位置,不如将用户1获得的相同位置发回给他。(这里的位置
我正在尝试在Netty中开始使用HTTP/2。我尝试了“hello world”示例,它按预期工作。在示例中,管道如下所示: 服务器: SslHandler 应用程序协议协商处理程序 Http2ConnectionHandler 客户: SslHandler 应用程序协议协商处理程序 HttpToHttp2ConnectionHandler
我想使用wordpress在我的网站上添加变体 我尝试了很多插件,但它们不能满足我的要求。 要求: 我想根据给定的变化变化价格: 任何人都可以引用插件或函数?
主要内容:JAVA钩子OrientDB钩子类似于数据库术语中的触发器,它在用户应用程序中的每个CRUD操作之前和之后启用内部事件。可以使用挂钩编写自定义验证规则,强制执行安全性,或安排外部事件,例如针对关系DBMS进行复制。 OrientDB支持两种钩子 - 动态钩子 - 触发器,可以在类级别和/或文档级别构建。 Java(Native)钩子 - 触发器,可以使用Java类构建。 动态钩子 动态钩子比Java钩子更灵活
我目前正在我的google open sheets脚本中使用此函数。。。 MailApp。sendEmail(电子邮件地址、电子邮件地址、主题、正文); 问题是我无法控制发件人的电子邮件地址。发件人电子邮件设置在哪里?我可以控制回复电子邮件地址,但这并不能真正解决我的问题。 有什么想法吗?谢谢
钩子列表 全局钩子 名称 描述 init 在生成文档站点前触发. nav 在解析导航 nav.md 后和解析文档前触发 book:before 加载 book 页面之前调用 page:before 加载 page 文件之前调用 page 加载 page 文件之后调用 book 加载 book 页面之后调用 finish 在生成文档站点完成后触发. 模板钩子 名称 描述 参数 tpl:header