uniapp中判断设备类型

全局变量:

在 UniApp 中,你可以通过 uni.getDeviceInfo 获取设备信息,并将设备类型全局存放。通常,这些信息可以存放在 app.vue 的全局变量中,以便在整个应用中访问。

以下是如何在 app.vue 中实现这一功能的完整代码,以及如何在其他页面中引用这些信息的示例。

app.vue

javascript 复制代码
<template>
  <App />
</template>

<script>
export default {
  data() {
    return {
      globalDeviceInfo: {}
    };
  },
  onLaunch: function() {
    console.log('App Launch');
    this.getDeviceInfo();
  },
  onShow: function() {
    console.log('App Show');
  },
  onHide: function() {
    console.log('App Hide');
  },
  methods: {
    getDeviceInfo() {
      uni.getDeviceInfo({
        success: (res) => {
          this.globalDeviceInfo = res;
          console.log('Device Info:', this.globalDeviceInfo);
        },
        fail: (err) => {
          console.error('Failed to get device info:', err);
        }
      });
    }
  },
  provide() {
    return {
      globalDeviceInfo: this.globalDeviceInfo
    };
  }
};
</script>

<style lang="scss">
@import "@/static/iconfont.css";
@import '@/uni_modules/uni-scss/index.scss';
/* #ifndef APP-NVUE */
@import '@/static/customicons.css';
@import './common/uni.css';
/* 设置整个项目的背景色 */
page {
  background-color: #f5f5f5;
}
/* #endif */
.example-info {
  font-size: 14px;
  color: #333;
  padding: 10px;
}
</style>

在其他页面中引用全局设备信息

你可以使用 inject 来获取 app.vue 中提供的 globalDeviceInfo。inject 翻译过就是"注入"

javascript 复制代码
<script>
import { ref, reactive, onMounted, onUnmounted, inject} from 'vue';
import WebSocketClient from '../../utils/websocket-client';

export default {
    name: 'chatRoom',
    setup() {
        const globalDeviceInfo = inject('globalDeviceInfo');
.....
复制代码
别忘了从vue中导入 inject.

解释

  1. app.vue :
    • data 中定义一个 globalDeviceInfo 对象来存储设备信息。
    • onLaunch 生命周期钩子中调用 getDeviceInfo 方法获取设备信息。
    • 使用 provide 方法将 globalDeviceInfo 提供给所有子组件。
  2. 其他页面 :
    • 使用 inject 获取 app.vue 中提供的 globalDeviceInfo
    • mounted 生命周期钩子中初始化设备信息,并将其赋值给本地数据。

这样,你就可以在整个 UniApp 应用中方便地访问设备信息了。

相关推荐
码字小学妹1 分钟前
Claude Opus 4.7 接入指南(2026):国内配置 + xhigh 推理 + 成本计算
前端
小赵同学WoW3 分钟前
插槽【vue2】与 【vue3】对比
前端
代码随想录3 分钟前
Agent大厂面试题汇总:ReAct、Function Calling、MCP、RAG高频问题
前端·react.js·前端框架
前端那点事3 分钟前
Vue响应式原理|从底层实现到面试考点,一文吃透(Vue2+Vue3全解析)
前端·vue.js
walking9575 分钟前
Vite 打包优化终极指南:从 30MB 到 800KB 的性能飞跃
前端·vue.js·vite
Highcharts.js5 分钟前
在 React 中使用 useState 和 @highcharts/react 构建动态图表
开发语言·前端·javascript·react.js·信息可视化·前端框架·highcharts
梓言6 分钟前
解决 Element Plus 中 Tooltip 样式影响全局菜单(Menu)及宽度控制失效的完美方案
前端·css·element
小蜜蜂dry10 分钟前
css变量
前端·css
|晴 天|1 小时前
Vue 3 实战:打造可拖拽歌词、播放列表的嵌入式音乐播放器
前端·javascript·vue.js
Liu.7741 小时前
Vue 3 开发中遇到的报错(2)
前端·javascript·vue.js