0
votes

Vue montée () ne détectant pas lawidthe intérieure

J'ai une page nuxt où je dois détecter si la page est ouverte sur mobile ou sur ordinateur de bureau. J'ai essayé d'utiliser la propriété window.innerwidth pour la détection, mais il semble qu'il ne fonctionne pas lors de la mise dans le monté () Crochet de cycle de vie.

ci-dessous est le code: xxx

mais est-ce que je mets la déclaration à l'intérieur créé () LIFECYCLET, il renvoie à nouveau une erreur sous la fenêtre n'est pas définie .

mon doute est pourquoi est-ce? créé () est exécuté avant alors que monté () et aussi, mon ESLint affiche une erreur comme "No-Globals-in-créée" . . .

Aidez ici!


2 commentaires

C'est dans la DOCS, VUE LIFECYCYCYCYCYCLE -> TIRE MONTÉ + RENDUE DOM, utilisez Await VM. $ NextTick ()


J'ai essayé de reproduire, jetez un coup d'œil à mon exemple, il semble que cela fonctionne comme prévu


4 Réponses :


0
votes

est-il nécessaire de définir la valeur iSmobile dans le crochet monté? Si non, je suggérerais que vous créez une propriété calculée ismobile qui renvoie true / filet en fonction du innerwidth xxx


0 commentaires

1
votes

Vous pouvez également envelopper votre contenu dans un DIV et utiliser la balise REF pour accéder à la clientèle initiale de la page, quelque chose comme ceci:

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
  {{this.size}}px
  <div ref="pageSizeContainer" style="background: #f5f5f5;padding:15px">
    Device size is a {{this.deviceType}}
  </div>
</div>


0 commentaires

0
votes

Je pense que vous ouvrez ceci sur un bureau si vous pouvez ouvrir la console de Chrome, de sorte que ceci est le cas, le problème ici est que vous n'avez pas configuré d'auditeur d'événement de redimension avec le code initial dans le crochet monté. < p> Quelque chose comme ça devrait fonctionner dans votre cas: xxx


0 commentaires

0
votes

Pour lire la fenêtre .innerWidth dans le crochet monté fonctionne comme prévu. Et votre code devrait également fonctionner. Essayez de vous connecter à la fenêtre window.innerwidth aussi pour voir ce qui se passe.

J'ai créé une boîte à sable rapide où vous pouvez le vérifier. La page Loads, lit fenêtre.innerwidth et définit ismobile en conséquence. https://codesandbox.io/s/deank-tree-bgwo3

Cependant, cela ne fonctionne que lors de la charge de la page. Il ne réévalue pas lorsque la fenêtre est redimensionnée. Gardez cela à l'esprit.


1 commentaires

window.innerWidth journaux sous forme de valeur 1315. Je ne sais pas comment? Quoi qu'il en soit, la réponse de procoib a résolu le problème