"如果“;不会't在React's组件WillMount()
"if" doesn't work in React's componentWillMount()
我创建了一个组件"App",它定义了一个函数componentWillMount
(当条件为false时,它应该重定向反应路由器)。
componentWillMount() {
const isLoggedIn = session.getLogin()
console.log( 'isLoggedIn is', isLoggedIn )
if ( !isLoggedIn ) {
console.log( 'now its false!' )
} else {
console.log( 'else' )
}
return false
}
但控制台输出以下内容:
isLoggedIn is false
else
我做错什么了吗?我在想,如果isLoggedIn
设置为false,控制台应该说"现在是false!",但没有。
请注意,session.getLogin()执行return sessionstorage.getItem('sessionLoggedIn')
谢谢你的帮助。
sessionStorage仅在打开的浏览器选项卡上保存数据
componentWillMount() {
return auth.isAuthenticated();
}
同时auth是一个auth助手
const auth = {
isAuthenticated() {
if (typeof window === "undefined")
return false
if (sessionStorage.getItem('jwt'))
return sessionStorage.getItem('jwt')
else
return false
},
authenticate(jwt, cb) {
if (typeof window !== "undefined")
sessionStorage.setItem('jwt', jwt)
cb();
},
signout(cb) {
if (typeof window !== "undefined"){
sessionStorage.clear();
}
cb()
signout().then((data) => {
sessionStorage.clear();
document.cookie = "t=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"
})
}
}
sessionStorage将其所有条目保存为String,因此您从中获得的值实际上是'false'
。因此,您需要检查返回的字符串是否仅为'true'
:
componentWillMount() {
const isLoggedIn = session.getLogin() === 'true'
console.log( 'isLoggedIn is', isLoggedIn )
if ( !isLoggedIn ) {
console.log( 'now its false!' )
} else {
console.log( 'else' )
}
return false
}
除此之外,如果这实际上是一个登录功能,那么它是非常不安全的。
相关文章:
- React重新渲染但未显示正确的组件
- 不能从angular2中的子组件指定父组件中的数组
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- React组件等待所需道具进行渲染
- 如何创建带有插槽的vue js组件预加载程序
- KnockoutJS-组件-多个实例
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 如何在salesforce aura闪电组件中使用jQuery.val()
- 为react组件传递道具的最佳方式
- [Vue warn]:未能解析组件
- 如何控制组件'的createContent函数被激发
- react组件中的绑定方法
- 如何在react js中移动第二个组件
- 多个组件是如何实现的
- 组件生命周期问题/无法处理未定义的问题
- "如果“;不会't在React's组件WillMount()