You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3项目中vue-cookies的$cookies.set代码应放置于何处?

Vue3中vue-cookies的$cookies.set()放置位置说明

你已经通过app.use()完成了vue-cookies的全局注册,$cookies.set()的放置位置完全取决于你的业务需求,以下是几种最常见的使用场景:

1. 组件内部(交互触发/页面初始化)

这是最常用的场景,比如用户完成登录操作后存token、页面加载时存用户偏好设置等。

Composition API(setup语法)

在setup中需要通过getCurrentInstance获取全局注册的$cookies:

import { getCurrentInstance, onMounted } from 'vue';

export default {
  setup() {
    const { proxy } = getCurrentInstance();

    // 示例1:页面挂载完成后设置cookie
    onMounted(() => {
      proxy.$cookies.set('user_preference', 'dark_mode', '7d');
    });

    // 示例2:按钮点击事件触发设置
    const handleLogin = () => {
      // 假设登录接口返回token
      const token = 'xxx-xxx-xxx';
      proxy.$cookies.set('auth_token', token, '1d');
    };

    return { handleLogin };
  }
};

Options API

直接通过this.$cookies调用即可:

export default {
  mounted() {
    // 页面初始化时设置
    this.$cookies.set('site_lang', 'zh-CN', '30d');
  },
  methods: {
    handleLogout() {
      // 操作触发时设置
      this.$cookies.set('last_logout_time', Date.now(), '1d');
    }
  }
};

2. 路由守卫中

如果需要在路由跳转前后设置cookie(比如记录用户访问路径),可以放在路由守卫里:

// router/index.js
import { createRouter } from 'vue-router';
import app from '../main';

const router = createRouter({
  // 路由配置
});

router.beforeEach((to, from, next) => {
  // 记录用户上一次访问的页面
  app.config.globalProperties.$cookies.set('last_visited_page', from.path, '1d');
  next();
});

export default router;

3. 全局初始化逻辑(main.js/index.js)

如果需要在应用启动时就设置一些全局cookie(比如默认的站点配置),可以在app.use(vueCookies)之后直接调用:

// main.js/index.js
import { createApp } from 'vue';
import vueCookies from 'vue-cookies';
import App from './App.vue';

const app = createApp(App);
app.use(vueCookies);

// 应用启动时设置全局cookie
app.config.globalProperties.$cookies.set('site_version', 'v1.0.0', '365d');

app.mount('#app');

简单来说:需要什么时候设置cookie,就把$cookies.set()放在对应的触发逻辑里——交互事件触发就放事件处理函数,页面加载就放生命周期钩子,路由跳转就放路由守卫。

内容的提问来源于stack exchange,提问作者Wadkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:19:57