Ändern Sie den Array-Index, um die nächste Folie anzuzeigen
P粉777458787
P粉777458787 2023-09-01 20:10:40
0
1
616
<p><pre class="brush:php;toolbar:false;"><template> <div class="carousel"> <slot></slot> <button @click="index++">Weiter</button> </div> </template> <Skript-Setup> import { useSlots, onMounted, onUpdated, ref} from 'vue'; const slots = useSlots() const index = ref(0) onMounted(() => { const defaultSlotElements = slots.default() console.log(`Mein Standard-Slot hat ${defaultSlotElements.length}-Elemente.`) }), onUpdated(() =>{ console.log(defaultSlotElements[index]) } ) </script></pre> <p>Ich versuche, ein Slot-basiertes Karussell zu erstellen. Vielen Dank an den vorherigen Mann von Stack Overflow, der mir geholfen hat, herauszufinden, wie ich das Slots-Array extrahieren kann. Jetzt habe ich es mit einem anderen Problem zu tun. Um das Karussell zu erstellen, muss ich irgendwie den Index der Elemente im Array ändern, damit ich zur nächsten Folie des Karussells wechseln kann. Ich musste dies später in meine Diashow-Komponente einfügen, damit V-Show den aktuellen Slot rendert, der standardmäßig auf 0 steht. Der Wert des Index wird jedoch durch den v-on-Befehl geändert, der den Index ändert, sodass er den nächsten oder vorherigen Steckplatz im Array auswählt. Ich weiß, dass ich in Vue ein komplexes Thema ausgewählt habe, aber ich möchte keine einfachere Version eines Karussells basierend auf einer Reihe von Bildern verwenden, da ich keine weitere Komponente darin hinzufügen kann. </p> <p>Es stellt sich heraus, dass ich das nächste Objekt im Array nicht einfach durch Ändern des Index <code>arr[index]</code> auswählen kann. </p>
P粉777458787
P粉777458787

Antworte allen(1)
P粉155832941

如果你真的需要用插槽来做到这一点,那么你就必须这样做 使用 Vue 渲染函数和 JSX

<script setup>
import { useSlots, onMounted, onUpdated, ref, h} from 'vue';

const slots = useSlots()
const index = ref(0)
const current = ref(null)
onMounted(() => {
  const defaultSlotElements = slots.default()
  current.value = defaultSlotElements[0]
}),
onUpdated(() =>{
    console.log(defaultSlotElements[index])
    }
)  
const render = () => {
    return h('div', { class: 'carousel'}, [
    h('p', `My default slot has ${slots.default().length} elements.`),
    h('div', slots.default()[index.value]),
    h('p', `Picture ${ index.value + 1 }`),
    h('button', { onClick: () => { 
      index.value = index.value + 1 == slots.default().length ? 0 : index.value + 1
    } }, 'Next')
  ]);
};
</script>

<template>
    <render />
</template>

这是工作证监会游乐场

更新

渲染函数可以与自定义组件一起使用。

这里尝试构建您的 结构。

SFC 游乐场

我没有看到任何其他方法可以使用默认插槽而不是使用render函数来构建您想要的内容。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!