vue如何做到计算属性传参?

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中取出结果返回,没有设计到计算。

相关推荐
user20585561518131 小时前
Windows 项目安装时报 `node-sass` 错误,如何快速处理
前端
LiaCode1 小时前
Redis 在生产项目的使用
前端·后端
LiaCode1 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战1 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
风骏时光牛马1 小时前
# Ruby基于Rails框架实现多角色权限管理与数据分页查询完整实战代码案例
前端
weedsfly1 小时前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
xiaodaoluanzha2 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn2 小时前
Fetch 请求竞态终结者:AbortController 不只是用来"取消"的
前端
阡陌Jony2 小时前
关于前端路由中的参数问题的学习(一): params,query, hash(#)
前端
阡陌Jony2 小时前
缓存相关学习笔记(一):Service Worker 缓存
前端