Lösung für Klickereignisfehler bei Verwendung von Better-Scroll bei der Vue-Mobilentwicklung

Lösung für Klickereignisfehler bei Verwendung von Better-Scroll bei der Vue-Mobilentwicklung

Vor Kurzem habe ich Vue verwendet, um das Entwickeln mobiler Projekte zu erlernen, und habe zum Scrollen das Plug-In „Better-Scroll“ verwendet.

Bei Verwendung des @click-Ereignisses in der in better-scroll eingeführten Komponente schlägt das Klickereignis fehl. v-on:click, v-bind:click und @click.native funktionieren alle. Ich habe jedoch @touchstart ausprobiert und es funktioniert. Ich habe festgestellt, dass click:true in der Konfiguration von better-scroll nicht festgelegt ist. Nachdem es festgelegt wurde, ist das Klickereignis erfolgreich.

Später, als ich vuex benutzte, berichtete ich immer wieder

[vuex] unbekannter Mutationstyp: changeCity

Mir ist gerade aufgefallen, dass ich Mutationen im Status in der Store-Datei geschrieben habe, und ich war so dumm, dass ich geweint habe. . .

Die korrekte Schreibweise lautet:

Kapselung und Verwendung von Vue Better-Scroll

Ich glaube, dass viele mobile Projekte das Plugin „Better-Scroll“ verwenden, das das Scrollen unserer Seiten weniger starr machen und uns auch die Implementierung einiger Funktionen wie Anker erleichtern kann.

Hinweis: Dieses Plugin funktioniert nur, wenn die Höhe des Inhalts, den Sie scrollen möchten, größer ist als die Höhe Ihrer übergeordneten Box

Installieren Sie zunächst dieses Plugin mit npm

npm ich scrolle besser --speichern

Als nächstes kapseln wir eine Better-Komponente, damit sie global wiederverwendet werden kann

<Vorlage>
  <div Klasse="Wrapper" ref="Wrapper" :style="{height:allHeight}">
   <Steckplatz></Steckplatz>
  </div>
</Vorlage>

<Skript>
BScroll von „better-scroll“ importieren
Standard exportieren {
  Daten() {
    zurückkehren {
      alleHöhe:''
    }
  },
  Requisiten:{
    Zum Scrollen verwenden: {
      Typ:Funktion,
      Standard:Funktion(){}
    },
    handleToTouchEnd:{
      Typ:Funktion,
      Standard:Funktion(){}
    }
  },
  Methoden: {
    handleToScrolltop(y){
      dies.scroll.scrollTo(0,y)
    }
  },
  montiert() {
    var scroll = neuer BScroll(this.$refs.wrapper,{
      tippen:wahr,
      Sondentyp: 1
    })
    dies.scroll = scrollen
     scrollen.auf('scrollen',(pos)=>{
       dies.handleToScroll(pos)
     })
     scroll.on('touchEnd',(pos)=>{
       this.handleToTouchEnd(pos)
     })

  lass dangqian = dies.$refs.wrapper.offsetTop
  let zongaodu = document.documentElement.clientHeight
  lass alles = zongaodu-dangqian
  dies.alleHöhe = alle + "px"
  },
}
</Skript>
<Stil>
</Stil>   

Die dynamische Bindung von allHeight dient dazu, die Höhe des übergeordneten Felds immer der Höhe vom unteren Seitenrand aus anzupassen, was die Implementierung durch Berechnung erleichtert.

Zwei Methoden werden gleichzeitig gekapselt. Eine davon ist Scroll, eine Pulldown-Aktualisierungsmethode, und TouchEnd ist eine Funktion, die nach der Pulldown-Aktualisierung ausgelöst wird. Es gibt auch viele andere Methoden, z. B. Pull-Up, um mehr zu laden usw. Sie können dies im offiziellen Website-Dokument überprüfen

Als nächstes registrieren Sie diese Komponente global in main.js

Scroller aus „./components/content/Scroller“ importieren
Vue.Komponente('Scroller',Scroller)

Verwendung in anderen Komponenten

Wenn wir beispielsweise möchten, dass der Inhalt im ul-Tag einen Scroll-Effekt hat, können wir ihn wie folgt schreiben

 <Scroller>
 <ul>
 </ul>
</Scroller>

Wenn Sie Kapselung verwenden möchten, können Sie über Requisiten kommunizieren

<Scroller :handleToScroll="HandleToScroll" :handleToTouchEnd="HandleToTouchEnd">

Auf diese Weise wird die Seite diesen Scroll-Effekt haben. Beachten Sie jedoch, dass viele unserer nativen Methoden abgedeckt werden. Es gibt jedoch auch eine entsprechende Lösung, die ihre internen Eigenschaften verwendet. Beispielsweise der Ankerpunktsprung der Seite

Ich habe eine Methode in der gekapselten Komponente geschrieben, um die Y-Achse zu bewegen mit

  Methoden: {
     handleToScrolltop(y){
       dies.scroll.scrollTo(0,y)
     }
   },

Wie benutzt man es?

Durch Aufruf dieser Methode auf der Seite, die Sie verwenden möchten

handleToScrolltop(), setze den entsprechenden offsetTop in die Klammern

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem des Klickereignisfehlers in der Vue-Komponente
  • Die benutzerdefinierten Komponenten von Vue können die Klickmethode nicht verwenden.
  • Vue-Benutzerkomponente @click – Klickfehler – Problem und Lösung

<<:  MySql-Import - CSV-Datei oder tabulatorgetrennte Datei

>>:  Tutorial zur Installation von Ubuntu 1804 in VMware Workstation 15 Pro (mit Bildern und Text)

Artikel empfehlen

Eine kurze Erläuterung der Rolle des Parameters docker --privileged=true

Mit etwa Version 0.6 wurde Privileged in Docker e...

Eine einfache Möglichkeit, das Passwort in MySQL 5.7 zu ändern

Dies ist ein offizieller Screenshot. Nach der Ins...

Detaillierte Erklärung der Verwendung des Bash-Befehls

Unter Linux wird Bash als Standard übernommen, wa...

MySQL-Sortierung zum Abrufen eines Ranking-Beispielcodes

Der Code sieht folgendermaßen aus: SELECT @i:=@i+...

Der Aufruf der Suchmaschine auf der Seite erfolgt am Beispiel von Baidu

Heute ist mir plötzlich eingefallen, dass es cool ...

Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Nachdem ich die Installation von Python8 minimier...

Tutorial zur Verwendung des iostat-Befehls unter Linux

Vorwort Es wird gesagt, dass sich die für Betrieb...

Über Generika der C++ TpeScript-Reihe

Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...

Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Inhaltsverzeichnis Normale Belastung Lazy Loading...

So extrahieren Sie Zeichenfolgenelemente aus nicht festen Positionen in MySQL

Vorwort Hinweis: Die Testdatenbankversion ist MyS...

Reine CSS-Implementierung eines Radio- und Checkbox-Effektbeispiels

Radio und Kontrollkästchen Reines CSS zum Erziele...