项目部分代码(app.js)
import Cookies from 'js-cookie'
const app = {
state: {
sidebar: {
opened: !+Cookies.get('sidebarStatus'),
withoutAnimation: false
},
themeStatus: Cookies.get('themeStatus') === undefined ? 1 : Cookies.get('themeStatus')
},
mutations: {
TOGGLE_SIDEBAR: state => {
if (state.sidebar.opened) {
Cookies.set('sidebarStatus', 1)
} else {
Cookies.set('sidebarStatus', 0)
}
state.sidebar.opened = !state.sidebar.opened
state.sidebar.withoutAnimation = false
},
CLOSE_SIDEBAR: (state, withoutAnimation) => {
Cookies.set('sidebarStatus', 1)
state.sidebar.opened = false
state.sidebar.withoutAnimation = withoutAnimation
},
},
actions: {
ToggleSideBar: ({ commit }) => {
commit('TOGGLE_SIDEBAR')
},
CloseSideBar ({ commit }, { withoutAnimation }) {
commit('CLOSE_SIDEBAR', withoutAnimation)
},
},
getters: {
themeStatus: state => state.themeStatus
}
}
export default app
为什么要这样写?
因为cookie取出的值都是string类型, 但是代码中需要用的是布尔类型
Cookies.get(‘sidebarStatus’))的意思是取出来的是"1"或 “0”
+Cookies.get(‘sidebarStatus’)的意思是+"1"或 +“0” , 触发隐式类型转换, 会得到1或者 0
!+Cookies.get(‘sidebarStatus’))的意思是!1或 !0 , 对数值类型取反会返回布尔类型, 会得到 false或true
!!+Cookies.get(‘sidebarStatus’)的意思是!false或 !true , 对布尔值进行取反, 会得到对应的布尔值
扩展知识
六大假值:0,undefined,NaN,null,""(空字符串),flase
字符串类型转换为数字类型:parseFloat(),parseInt(),Number(),+等等