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
相关产品推荐
相关产品推荐

