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

Vue中ref变量variant无法更新问题求助

问题解决:Vue中ref变量更新无效

你犯了一个典型的ref使用错误:在axios回调里重新创建了新的ref对象,替换了原来的变量,导致组件响应式系统只关联了初始的ref,新的ref没被绑定,所以变量没更新。

正确的做法是修改ref的.value属性,而不是重新赋值整个变量。因为ref创建的响应式容器,必须通过.value来修改内部的值,这样才能触发响应式更新。

修正后的代码:

<script>
  if (document.querySelector('#add-to-cart-form')) {
    const app = Vue.createApp({
      delimiters: ['${', '}'],
      setup() {
        let variant = Vue.ref('ea´ljapd');

        axios.get('/products/{{product.handle}}.js').then((results) => {
          // 直接修改ref的value属性,而非重新创建ref
          variant.value = results.data.variants[0];
          console.log(variant.value); // 打印更新后的值
        });

        const addToCart = (event) => {
          event.preventDefault();

          axios
            .post('/cart/add.js', data)
            .then((response) => {
              console.log(response);
            })
            .catch((error) => {
              console.log(error);
            });
        };
        return {
          variant,
        };
      },
    }).mount('#add-to-cart-form');
  }
</script>

额外提醒两点:

  • 若使用Vue 3,建议通过import { ref } from 'vue'导入ref,替代Vue.ref写法,代码更规范。
  • addToCart函数里的data变量未定义,后续可能触发报错,记得补充该变量的定义逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:35:30