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

相关推荐
捕鲸叉8 分钟前
QT自定义工具条渐变背景颜色一例
开发语言·前端·c++·qt
傻小胖1 小时前
路由组件与一般组件的区别
前端·vue.js·react.js
Elena_Lucky_baby1 小时前
在Vue3项目中使用svg-sprite-loader
开发语言·前端·javascript
重生之搬砖忍者1 小时前
uniapp使用canvas生成订单小票图片
前端·javascript·canva可画
万水千山走遍TML1 小时前
console.log封装
前端·javascript·typescript·node·log·console·打印封装
赵大仁2 小时前
uni-app 多平台分享实现指南
javascript·微信小程序·uni-app
阿雄不会写代码2 小时前
使用java springboot 使用 Redis 作为消息队列
前端·bootstrap·html
m0_748236582 小时前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
@C宝2 小时前
【前端面试题】前端中的两个外边距bug以及什么是BFC
前端·bug
Burt3 小时前
@antfu/eslint 支持 globals 全局变量
前端·uni-app·eslint