1.计算属性传参,还在return一个函数?
let nameFull = computed(() => {
return e => {
console.log('参数', e)
}
})
那这样的话,干脆直接写一个函数
2.真正的计算属性传参,借助map实现
import { computed } from "vue";
export function zlcComputed(fn) {
const map = new Map();
return function (...args) {
const key = JSON.stringify(args);
if (map.has(key)) {
return map.get(key);
}
const res = computed(() => {
return fn(...args);
});
map.set(key, res);
return res;
};
}
<template>
<div class="hello">{{ firstName("章") }}</div>
<div class="hello">{{ firstName("龙") }}</div>
</template>
<script setup>
import { zlcComputed } from "@/utils/zlcComputed";
let firstName = zlcComputed((data) => {
return data;
});
</script>
<style scoped>
</style>
3.有些人会有疑问,还不是每次都会走zlcComputed中return出来的函数?没错,但是万一设计到复杂的好性能的计算呢?如果使用步骤一的方法return一个函数,每次都会重新运行,而使用这种方式直接从map中取出结果返回,没有设计到计算。