材料来源 realworld 开源项目
asyncData 仅支持服务端,页面初始化,组件加载之前,不能this调用
案例
官方
nuxt.config.js
module.exports = {
router: {
linkActiveClass: 'active',
extendRoutes (routes, resolve) {
routes.splice(0)
routes.push(
...[
{
path: '/',
component: resolve(__dirname, 'pages/layout/'),
children: [
{
name: 'home',
path: '/',
component: resolve(__dirname, 'pages/home/')
},
{
name: 'settings',
path: '/settings',
component: resolve(__dirname, 'pages/settings/')
}
]
}
]
)
}
}
}
store/index.js
const cookieparser = process.server ? require('cookieparser') : undefined
export const state = () => {
return {
user: null
}
}
export const mutations = {
setUser (state, data) {
state.user = data
}
}
export const actions = {
nuxtServerInit({commit}, {req}) {
let user = null
if (req.headers.cookie) {
const par = cookieparser.parse(req.headers.cookie)
try {
user = JSON.parse(par.user)
} catch (error) {
console.log('sdsdss+ user', error)
}
}
commit('setUser', user)
}
}
middleware/middle.js
export default function({ store, redirect }) {
console.log('dsdsdsd', store.state.user)
if (store.state.user) {
return redirect('/settings')
}
}
对应vue文件
<template>
<div>
<nuxt-link class="nav-link" to="/" exact>Home</nuxt-link>
</div>
</template>
const Cookie = process.client ? require('js-cookie') : undefined
export default {
middleware: 'middle',
name: 'Home',
mounted() {
this.toSave()
},
methods: {
toSave() {
Cookie.set('user', '3223232332')
}
}
}
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)