当前位置:首页 > uni-app

uniapp数据字典

2026-02-06 11:13:28uni-app

数据字典的实现方法

在UniApp中实现数据字典功能,可以通过以下几种方式:

全局挂载字典数据 将字典数据挂载到Vue原型上,方便全局调用

// main.js
Vue.prototype.$dict = {
  gender: [
    { label: '男', value: 1 },
    { label: '女', value: 2 }
  ]
}

使用Vuex管理字典 创建专门的字典模块进行集中管理

// store/modules/dict.js
export default {
  state: {
    gender: [
      { label: '男', value: 1 },
      { label: '女', value: 2 }
    ]
  },
  getters: {
    getDict: (state) => (key) => {
      return state[key] || []
    }
  }
}

本地存储字典数据 将字典数据缓存到本地存储中

uni.setStorageSync('dict_gender', [
  { label: '男', value: 1 },
  { label: '女', value: 2 }
])

字典数据的使用示例

模板中使用字典

<view v-for="item in $dict.gender" :key="item.value">
  {{item.label}}
</view>

脚本中使用字典

const genderOptions = this.$dict.gender
const selectedLabel = genderOptions.find(item => item.value === 1).label

从Vuex获取字典

computed: {
  genderOptions() {
    return this.$store.getters.getDict('gender')
  }
}

字典工具函数封装

创建字典工具类

// utils/dict.js
export default {
  // 获取字典标签
  getLabel(dictKey, value) {
    const dict = this.getDict(dictKey)
    const item = dict.find(item => item.value === value)
    return item ? item.label : ''
  },

  // 获取完整字典
  getDict(dictKey) {
    return uni.getStorageSync(`dict_${dictKey}`) || []
  }
}

使用字典工具

import dict from '@/utils/dict.js'
const label = dict.getLabel('gender', 1)

字典数据加载策略

应用启动时加载 在App.vue的onLaunch中加载基础字典

onLaunch() {
  this.loadBaseDicts()
},
methods: {
  async loadBaseDicts() {
    const res = await uni.request({ url: '/api/dict/base' })
    res.data.forEach(item => {
      uni.setStorageSync(`dict_${item.dictKey}`, item.dictData)
    })
  }
}

按需加载字典 在需要时动态加载字典数据

async loadDict(dictKey) {
  if (!uni.getStorageSync(`dict_${dictKey}`)) {
    const res = await uni.request({ url: `/api/dict/${dictKey}` })
    uni.setStorageSync(`dict_${dictKey}`, res.data)
  }
}

字典数据格式规范

推荐使用统一的字典数据结构:

{
  dictKey: 'gender',  // 字典键名
  dictData: [         // 字典数据
    { label: '男', value: 1 },
    { label: '女', value: 2 }
  ],
  remark: '性别字典'  // 字典说明
}

对于带翻译需求的字典,可扩展为:

uniapp数据字典

{
  label: '男',
  value: 1,
  enLabel: 'Male',
  jpLabel: '男性'
}

标签: 字典数据
分享给朋友:

相关文章

Vue数据依赖实现

Vue数据依赖实现

Vue数据依赖实现原理 Vue的数据依赖实现基于响应式系统,核心是通过Object.defineProperty或Proxy拦截数据读写操作,结合发布-订阅模式自动追踪依赖和触发更新。 核心机制 依…

vue实现数据删除

vue实现数据删除

vue实现数据删除的方法 使用v-for和v-on指令 在Vue中可以通过v-for指令渲染列表数据,结合v-on指令监听删除事件。定义一个方法处理删除逻辑,通常使用splice方法从数组中移除指定项…

vue实现数据结构图

vue实现数据结构图

Vue 实现数据结构图的方法 使用第三方库 Vue 可以与多种图表库结合使用,例如 D3.js、ECharts 或 Vis.js。这些库提供了强大的图形渲染能力,适合展示复杂的数据结构图。 安装 E…

react如何设置数据

react如何设置数据

设置数据的常见方法 在React中设置数据通常涉及组件的状态管理,可以通过以下几种方式实现: 使用useState Hook(函数组件) import React, { useState } fr…

vue实现数据滚动

vue实现数据滚动

Vue 实现数据滚动的方法 使用 CSS 动画实现滚动 通过 CSS 的 animation 和 @keyframes 实现滚动效果。适用于简单的文字或列表滚动。 <template>…

vue 实现数据滚动

vue 实现数据滚动

Vue 实现数据滚动的方法 在Vue中实现数据滚动可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS动画实现滚动 通过CSS的animation和@keyframes可以实现简单的滚动效果…