Comment implémenter le défilement vers une variable d'un élément spécifié dans Vue 3 ?
P粉060528326
P粉060528326 2023-08-28 20:17:07
0
1
618
<p>J'ai la fonction suivante en JavaScript pur pour faire défiler jusqu'à un élément et je souhaite convertir ce code en Vue 3. </p> <pre class="brush:php;toolbar:false;">var source = '' fonction showScrollInto (currentLocation, toLocation) { source = currentLocation // L'emplacement à retourner après avoir masqué la section document.getElementById(toLocation).style.display = 'block' document.getElementById(toLocation).scrollIntoView() }</pré> <p>et revenez à l'emplacement d'origine : </p> <pre class="brush:php;toolbar:false;">document.getElementById(source).scrollIntoView()</pre> <p>Appelez showScrollInto lorsque vous cliquez sur le bouton : </p> <pre class="brush:php;toolbar:false;"><button onClick="showScrollInto('top', 'interesse')">TITRE</button></pre> <p>Maintenant, je convertis la fonction en méthode et j'essaie : </p> <pre class="brush:php;toolbar:false;">importer { ref } depuis "vue" var source = "" const toLocation = ref('Vue.js') exporter par défaut { nom : "Application", données() { retour { hideAlleClubs : vrai, hideIkWilKennismaken : vrai, hideAlleLocaties : vrai, hideMeerOverKegelen : vrai, cacherInteresse: vrai } }, méthodes : { showScrollInto (événement, emplacement actuel, emplacement) { source = currentLocation // L'emplacement à retourner après avoir masqué la section this.hideInteresse = faux this.$refs.toLocation.scrollIntoView({ behavior : 'smooth'}) // document.getElementById(toLocation).style.display = 'block' // document.getElementById(toLocation).scrollIntoView() } } }</pré> <p>Appelez showScrollInto en cliquant sur le bouton : </p> <pre class="brush:php;toolbar:false;"><button @click="showScrollInto($event, 'kosten', 'interesse')">TITLE</button></ pré> <p>Les éléments vers lesquels faire défiler sont les suivants : </p> <pre class="brush:php;toolbar:false;"><section class = "top-level-section" v-show="!hideInteresse" ref="interesse"></ pré> <p>Passer une variable dans la méthode fonctionne bien, mais je n'arrive pas à comprendre comment faire défiler jusqu'à une position où la position est une variable. </p> <p>this.$refs.interesse.scrollIntoView({ behavior: 'smooth'}) peut être utilisé pour faire défiler jusqu'à l'élément avec l'identifiant 'interesse', mais je ne sais pas comment convertir le nom de cet élément en variable . De plus, je comprends que this.$refs n'est pas une notation Vue 3 et devrait être converti en quelque chose comme ref('value'), mais je ne sais pas comment faire cela.</p>
P粉060528326
P粉060528326

répondre à tous(1)
P粉282627613

Tout d’abord, lisez la documentationde Vue sur les références de modèles. Il y a un bouton bascule dans le coin supérieur gauche de la page pour basculer entre les options API et la syntaxe API combinée.

L'utilisation de références variables pour les références dépend de la version de Vue et/ou de la syntaxe que vous utilisez.

<div ref="someRefName"></div>

Vue 2 / API Options

La variable doit être une chaîne correspondant à la référence de l'élément

const refVar = "someRefName"
this.$refs[refVar].scrollIntoView({ behavior: "smooth" });

Vue 3 / API combinée

Les variables doivent se voir attribuer la valeur ref() (doit être importée). Le nom de la constante doit correspondre au nom de la référence sur l'élément

const someElement = ref() // 赋值给模板中的某个元素
someElement.value.scrollIntoView({ behavior: "smooth" });

L'API d'options et l'API de composition ne doivent pas être mélangées, c'est pourquoi une seule syntaxe est utilisée.

Dans les deux cas, vous pouvez avoir plusieurs éléments avec le même nom de référence, auquel cas Vue créera un tableau contenant toutes les références portant le même nom, donc pour accéder à un élément spécifique, vous devrez également utiliser un index.

Voici quelques exemples simplifiés. J'espère qu'ils résoudront vos problèmes restants et que vous pourrez les modifier si nécessaire.

Codes API d'options et exemple de boîte

Codes API combinés et exemple de boîte

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal