Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
96090655
N
next.js
项目概览
CoCo_Code_Op2
/
next.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
next.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
96090655
编写于
9月 16, 2019
作者:
T
Tommy Ljungberg
提交者:
Tim Neutkens
9月 16, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(examples): use hooks in with-cookie-auth example (#8729)
上级
583b4677
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
43 addition
and
57 deletion
+43
-57
examples/with-cookie-auth/utils/auth.js
examples/with-cookie-auth/utils/auth.js
+43
-57
未找到文件。
examples/with-cookie-auth/utils/auth.js
浏览文件 @
96090655
import
{
Componen
t
}
from
'
react
'
import
{
useEffec
t
}
from
'
react
'
import
Router
from
'
next/router
'
import
nextCookie
from
'
next-cookies
'
import
cookie
from
'
js-cookie
'
function
login
({
token
})
{
export
const
login
=
({
token
})
=>
{
cookie
.
set
(
'
token
'
,
token
,
{
expires
:
1
})
Router
.
push
(
'
/profile
'
)
}
function
logout
()
{
cookie
.
remove
(
'
token
'
)
// to support logging out from all windows
window
.
localStorage
.
setItem
(
'
logout
'
,
Date
.
now
())
Router
.
push
(
'
/login
'
)
}
// Gets the display name of a JSX component for dev tools
const
getDisplayName
=
Component
=>
Component
.
displayName
||
Component
.
name
||
'
Component
'
function
withAuthSync
(
WrappedComponent
)
{
return
class
extends
Component
{
static
displayName
=
`withAuthSync(
${
getDisplayName
(
WrappedComponent
)}
)`
static
async
getInitialProps
(
ctx
)
{
const
token
=
auth
(
ctx
)
const
componentProps
=
WrappedComponent
.
getInitialProps
&&
(
await
WrappedComponent
.
getInitialProps
(
ctx
))
return
{
...
componentProps
,
token
}
}
constructor
(
props
)
{
super
(
props
)
this
.
syncLogout
=
this
.
syncLogout
.
bind
(
this
)
}
componentDidMount
()
{
window
.
addEventListener
(
'
storage
'
,
this
.
syncLogout
)
}
componentWillUnmount
()
{
window
.
removeEventListener
(
'
storage
'
,
this
.
syncLogout
)
window
.
localStorage
.
removeItem
(
'
logout
'
)
}
syncLogout
(
event
)
{
if
(
event
.
key
===
'
logout
'
)
{
console
.
log
(
'
logged out from storage!
'
)
Router
.
push
(
'
/login
'
)
}
}
render
()
{
return
<
WrappedComponent
{...
this
.
props
}
/
>
}
}
}
function
auth
(
ctx
)
{
export
const
auth
=
ctx
=>
{
const
{
token
}
=
nextCookie
(
ctx
)
/*
...
...
@@ -81,4 +28,43 @@ function auth (ctx) {
return
token
}
export
{
login
,
logout
,
withAuthSync
,
auth
}
export
const
logout
=
()
=>
{
cookie
.
remove
(
'
token
'
)
// to support logging out from all windows
window
.
localStorage
.
setItem
(
'
logout
'
,
Date
.
now
())
Router
.
push
(
'
/login
'
)
}
export
const
withAuthSync
=
WrappedComponent
=>
{
const
Wrapper
=
props
=>
{
const
syncLogout
=
event
=>
{
if
(
event
.
key
===
'
logout
'
)
{
console
.
log
(
'
logged out from storage!
'
)
Router
.
push
(
'
/login
'
)
}
}
useEffect
(()
=>
{
window
.
addEventListener
(
'
storage
'
,
syncLogout
)
return
()
=>
{
window
.
removeEventListener
(
'
storage
'
,
syncLogout
)
window
.
localStorage
.
removeItem
(
'
logout
'
)
}
},
[
null
])
return
<
WrappedComponent
{...
props
}
/
>
}
Wrapper
.
getInitialProps
=
async
ctx
=>
{
const
token
=
auth
(
ctx
)
const
componentProps
=
WrappedComponent
.
getInitialProps
&&
(
await
WrappedComponent
.
getInitialProps
(
ctx
))
return
{
...
componentProps
,
token
}
}
return
Wrapper
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录