























这是一个创建于 664 天前的主题,其中的信息可能已经有所发展或是发生改变。
省流: device 提供了如
const { isMobile } = useDevice()的形式来判断设备类型。但需要注意的是,在nuxt build模式中使用v-if以及动态类名(如<div :class="{mobile: isMobile}">)的形式均可生效,而在nuxt build和nuxt generate模式中仅v-if生效,后者会有问题。
<template>
<section>
<div v-if="$device.isDesktop">Desktop</div>
<div v-else-if="$device.isTablet">Tablet</div>
<div v-else>Mobile</div>
</section>
</template>
dev模式下都能正常工作<Dialog v-if="!isMobile" .../>
<DialogM v-else .../>
...
<Card :class="{mobile: isMobile}" .../>
nuxt generate,发现访问时,使用第二种写法的组件一律采用了手机端的样式(配置项里默认 UA 是手机版的),无视 UA ,这才发现官方文档里并没提第二种写法,但它在dev模式下确实能正常工作....没办法,现在只能尽力填坑。<Card :class="{mobile: isMobile}" .../>改为<Card v-if="isMobile" class="mobile" .../> <Card v-else ...>就行了,写法是有点傻,但也只能这样尽量找补了。1 StevenZhl 2024 年 8 月 20 日- 补充:经过一下午的测试,发现该插件不太可靠,先前的问题主要是由于动态类名以及在**同一个 page 中使用了太多次 isMobile 判断** |
2 HoshinoSuzumi 2025 年 1 月 24 日将使用 `useDevice` 的组件设为 client 模式能解决吗? |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。