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 应用中方便地访问设备信息了。

相关推荐
葡萄城技术团队12 分钟前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
excel1 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
Da Da 泓2 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
zxcvb1533 小时前
远程查看本地文档:一条轻量 Web 文件服务的工程化链路
前端·远程查看文档
niucloud-admin3 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
程序员大阳3 小时前
副队长JavaScript教程(50)-DOM:网页开发的起点
javascript·dom·es·节点·概念·document·关系
北岛贰3 小时前
啵啵音乐迎来全新升级!
前端
hkNaruto5 小时前
【AI】基于大模型的AI游戏地图生成、控制方案:AI Native Game Harness 迁移操作手册
前端·人工智能·游戏
IT_陈寒5 小时前
Java序列化踩坑记:对象循环引用让我加班两小时
前端·人工智能·后端
Acro6 小时前
快给macOS 上的Grok Bot换一套皮肤
前端