vue composition API - ref变量内的计算属性

Posted

技术标签:

【中文标题】vue composition API - ref变量内的计算属性【英文标题】:vue composition API - computed property inside ref variable 【发布时间】:2021-12-22 14:20:10 【问题描述】:

我有以下代码:

    <template>
      <div class="row flex justify-center w-full h-full" style="min-height: 320px;>
       <q-select style="min-width: 92px;" class="w-full" outlined :options="options" label="Número de parcelas" emit-value map-options v-model="installments"></q-select>
      </div>
  </template>

    <script>
    import  useQuasar  from 'quasar'
    import  useStore  from 'vuex'
    import  defineComponent, ref, computed  from 'vue'
    
    export default defineComponent(
      name: 'PageIndex',
      components: 
        loading
      ,
    
      setup () 
        const store = useStore()
        const $q = useQuasar()
        let installments = ref(12)
        const product = computed(() => 
          return store.getters['checkout/getCheckoutProduct']
        )
        let options = ref([
          
            label: `12x de R$ $(product.value.price / 12)`,
            value: 12
          ,
          
            label: `11x de R$ $(product.value.price / 11)`,
            value: 11
          
        ])
        return 
          product,
          options,
          installments
          
      
    )
    </script>

问题是返回 UNDEFINED,甚至 product.value.price 在我的 vuex 内的 VUE devtools 中正确显示。此外,组件上的其他地方正在获得产品价值,但是......“选项”不起作用。

注意选项里面有变量,我如何将一个变量从计算传递到 ref() 变量?!

【问题讨论】:

为什么不计算变量“options”?它是根据反应属性 - 产品计算的。 你能解释一下如何将它也用作计算属性吗?! 【参考方案1】:

Ref 只会被调用一次。它在设置中使用,因此它的工作方式类似于 onCreated 钩子。您应该使用计算属性。它计算反应内容。

查看我的演示:

https://codesandbox.io/s/vue-3-vuex-4-vue-router-forked-4u0lj?file=/src/views/Home.vue

【讨论】:

在选项上使用计算属性确实可以解决问题。我习惯了旧的 vue2 方式。

以上是关于vue composition API - ref变量内的计算属性的主要内容,如果未能解决你的问题,请参考以下文章

Vue Composition API - 使用 TypeScript 获取 ref

vue composition api 访问 原vue2中 this.$refs

vue composition api 访问 原vue2中 this.$refs

Vue Composition API TypeScript ref 类型不起作用

vue composition API - ref变量内的计算属性

Vue3 Composition API——computedwatchEffectsetup中使用ref