vue3 封装全局公共computed方法

本文介绍了如何在Vue项目中创建全局computed方法,如formatAirPort,用于处理Vuex状态中的机场数据。在main.js中安装全局组件,并给出使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,创建一个名为globalComputed.js的文件

// 全局computed方法
/**
 * 使用formatAirPort(params)
 * 
 * 
 */
const Global = {
    install(app) {
        // 起始站
        app.config.globalProperties.formatAirPort = function () {
            return function (id) {
                if (!id) {
                    return "";
                } else {
                    return this.$store.state.airportSelect.options.filter((el) => el.airportCode == id)[0]?.airportApsn;
                }
            };
        }()
        // 航班类型
        app.config.globalProperties.formatWayBillType = function () {
            return function (id) {
                if (!id) {
                    return "";
                } else {
                    return this.$store.state.wayBillType.options.filter((el) => el.code == id)[0]?.name;
                }
            };
        }()
        // 航班性质
        app.config.globalProperties.formatFlightNature = function () {
            return function (id) {
                if (!id) {
                    return "";
                } else {
                    return this.$store.state.flightNature.options.filter((el) => el.code == id)[0]?.name;
                }
            };
        }()
    },
};

export default Global;

2,在主入口(main.js)安装该全局组件

import globalComputed from '@/utils/globalComputed'
app.use(globalComputed);

3,使用示例

vuex数据:[{“airportId”:“1”,“airportCode”:“XIY”,“airportIcao”:“”,“airportApsn”:“西安”,“cnName”:“西安咸阳国际机场”,“enName”:“”,“cityCode”:“”,“remark”:“”,“countryCode”:“”},{“airportId”:“2”,“airportCode”:“XNN”,“airportIcao”:“”,“airportApsn”:“西宁”,“cnName”:“西宁曹家堡机场”,“enName”:“”,“cityCode”:“”,“remark”:“”,“countryCode”:“”}],“datetime”:1708401151145}]

formatAirPort(params)//西安
### 封装公共组件的方法Vue.js 开发过程中,为了提高代码的重用性和维护性,通常会对一些常用的功能进行封装公共组件。这些组件可以在多个地方被调用而无需重复编写相同的逻辑。 #### 创建基本结构 按照良好的实践习惯,在项目初始化阶段应该规划好项目的文件夹布局。对于一个典型的 Vue 项目来说,至少会有 `views`、`common` 和 `features` 这三个主要目录[^1]: - **Views**: 存储页面级别的视图组件; - **Common**: 放置那些在整个应用中都会频繁使用的通用型组件,比如头部导航栏(head) 或者页脚(foot); - **Features**: 容纳具有特定业务逻辑的功能模块,像轮播(swiper)、标签栏(tabbar)或是带有分页加载特性的列表(list). #### 编写具体实现 当着手于某个具体的公共组件时,遵循标准的单文件组件(SFC)格式是非常重要的。每一个 `.vue` 文件都应当包含 `<template>`、`<script>` 及 `<style>` 三部分[^4]: ```html <!-- common/components/Head.vue --> <template> <header class="header"> <!-- 头部内容 --> </header> </template> <script> export default { name: &#39;Header&#39;, props: [&#39;title&#39;], } </script> <style scoped> .header { /* 样式 */ } </style> ``` 在此基础上,如果涉及到更复杂的交互行为,则可以通过定义属性(`props`)来接收外部传递的数据;利用计算属性(computed properties)处理内部状态的变化;借助事件(event bus or emit)与其他兄弟姐妹甚至父辈节点通信等等[^2]. 另外值得注意的是,针对某些特殊场景下的需求——例如图表展示——还可以进一步抽象出更高层次的服务层函数或工具类库辅助完成任务。以 ECharts 的集成为例,通过预先设定一套全局适用的基础配置项(base option),再允许局部定制化调整的方式,既保证了一致性又不失灵活性[^3]. 最后提醒一点,随着应用程序规模的增长以及团队协作模式的发展变化,合理运用插槽(slot mechanism)机制赋予使用者更大的自由度去扩展原有设计将是十分必要的考虑因素之一.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值