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

Vue货币切换器@click传reload=true不生效,无法自动重载页面怎么办

解决方案

核心修改逻辑

问题有两个核心诱因:

  • setCurrency方法没有接收你点击时传入的重载标识参数
  • 直接调用window相关API会在服务端渲染阶段(created钩子会在服务端执行)触发未定义报错

按以下步骤修改即可:

1. 调整setCurrency方法逻辑

给方法增加可选重载参数,同时增加客户端环境判断,避免服务端执行时报错:

methods: {
  setCurrency(newcurrency, reload = false) {
    this.$cookies.set(`usercurrency`, newcurrency, {
      path: '/',
      maxAge: 60 * 60 * 24 * 7
    })
    // 仅需要重载且是客户端环境时执行刷新
    if (reload && typeof window !== 'undefined') {
      // 两种刷新方式二选一即可
      window.location.reload()
      // window.location.href = '/'
    }
  }
}

2. 简化点击事件的参数传递

直接传入布尔值true标识需要重载即可,不需要额外定义变量:

<b-dropdown-item v-for="(item, index) in currencies" :key="index" has-link aria-role="menuitem">
  <a class="no-underline" @click="setCurrency(item.iso, true)">
    <span class="text-pink-600 font-bold">{{item.fullname}} ({{item.iso}})</span>
  </a>
</b-dropdown-item>

扩展可选优化

如果你是单页应用不需要整页重载,可以在设置完cookie后更新当前组件的currency响应式变量,配合Vue的响应式能力直接更新导航栏显示,无需刷新页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:09