我尝试使用Vuejs 3中的一个计算函数,该函数使用组合在一个.js文件中外部化。
这里我的.vue文件,它很简单:计数变量,其递增以触发所述计算函数。
<template>
<div>
{{ computedCount }}
</div>
</template>
<script setup>
import { ref } from 'vue'
import useComputedValue from './js/useComputed' // Import computed function
const count = ref(0) // Instanciate the count variable
count.value += 1 // Trigger the compute
const computedCount = useComputedValue(count)
console.debug(computedCount)
</script>
下面是我的useComputed.js文件:
import { computed } from 'vue'
export default function useComputedValue(count) {
const computedValue = computed(() => count.value * 5)
return {
computedValue,
}
}
该函数简单地将参数中给定的值乘以5。问题是console.log(computedCount)给出了一个
{computedValue: ComputedRefImpl}
computedValue: ComputedRefImpl {dep: Set(1), _dirty: false, __v_isRef: true, effect: ReactiveEffect, _setter: ƒ, …}
[[Prototype]]: Object
在模板中,它显示{“computedValue”:5 }因此,该函数不会返回乘以5参数的值,而是返回一个 Package 器对象refImpl。
该示例改编自文档:组成文件
如果我直接在.vue文件的标记中声明计算函数,而不从其他文件导入它,它会像预期的那样工作:该函数返回计数值乘以5。
很明显,这是我不明白的事情......但是什么?
- 我使用的是3.2和标签,所以脚本标签中的setup()返回不再需要:3.2*
谢谢你在adavnce。
2条答案
按热度按时间7eumitmz1#
返回的是函数本身。如果您不在模板范围内,则需要返回
computedCount.value
hivapdat2#
因为函数
useComputedValue
返回一个形式为{ computedCount: ComputedRef<number> }
的对象,所以vue和console.debug可以正常工作。所有正确的,但似乎你正在寻找的是computed
返回,你将有2个解决办法:1.编辑文件
./js/useComputed
(如果您想要正确的文件名含义,建议使用此方法)1.编辑文件
<vue>
(如果扩展功能,建议使用此方法)