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

相关推荐
liangshanbo12151 小时前
写好 React useEffect 的终极指南
前端·javascript·react.js
哆啦A梦15883 小时前
搜索页面布局
前端·vue.js·node.js
_院长大人_4 小时前
el-table-column show-overflow-tooltip 只能显示纯文本,无法渲染 <p> 标签
前端·javascript·vue.js
SevgiliD4 小时前
el-table中控制单列内容多行超出省略及tooltip
javascript·vue.js·elementui
要加油哦~4 小时前
JS | 知识点总结 - 原型链
开发语言·javascript·原型模式
哆啦A梦15885 小时前
axios 的二次封装
前端·vue.js·node.js
阿珊和她的猫5 小时前
深入理解与手写发布订阅模式
开发语言·前端·javascript·vue.js·ecmascript·状态模式
yinuo5 小时前
一行 CSS 就能搞定!用 writing-mode 轻松实现文字竖排
前端
snow@li6 小时前
html5:拖放 / demo / 拖放事件(Drag Events)/ DataTransfer 对象方法
前端·html·拖放
爱看书的小沐6 小时前
【小沐杂货铺】基于Three.js渲染三维风力发电机(WebGL、vue、react、WindTurbine)
javascript·vue.js·webgl·three.js·opengl·风力发电机·windturbine