更改数组索引以显示下一张幻灯片

2023-12-28

<template>
    <div class="carousel">
        
        <slot></slot>
         <button @click="index++">Next</button>
    </div>

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

const slots = useSlots()
const index = ref(0)
onMounted(() => {
  const defaultSlotElements = slots.default()
  console.log(`My default slot has ${defaultSlotElements.length} elements.`)
  
}),
onUpdated(() =>{
    console.log(defaultSlotElements[index])
}
)

</script>

我正在尝试创建基于插槽的轮播。感谢前一个关于堆栈溢出的人,他帮助我弄清楚了如何提取插槽数组。现在,我正在处理另一个问题。为了创建轮播,我必须以某种方式更改数组中元素的索引,这样我就可以移动到轮播的下一张幻灯片。后来我必须将它注入到我的幻灯片组件中,让 V-show 渲染默认为 0 的当前插槽。但是索引的值会被更改索引的 v-on 指令更改,因此它选择数组中的下一个或上一个槽。我知道我在 vue 中选择了一个复杂的主题,但我不想使用基于图像数组的更简单版本的轮播,因为我无法在其中添加另一个组件。

事实证明我不能简单地通过改变索引arr[index]选择数组中的下一个对象。


如果你真的需要用插槽来做到这一点,那么你就必须这样做 与Vue渲染函数和 JSX https://vuejs.org/guide/extras/render-function.html

<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>

这是工作中的证监会游乐场 https://sfc.vuejs.org/#eNp9VG2P0zgQ/itWdNBW18ROU/p2DQhxh3QfQEiIT2Ql3GSSZtexLdvZFq363xknaenuAlXbZOyZZ+Z5ZuyH4K3W0X0LwSbY2tzU2hELrtWvM1k3WhlH3nGjWguClEY1ZBTR84IPG2VyS/s4jEDDQaMFd+Attz27okUI2nVTEWvyNAv2zmm7oRSODozkIsyVdCBdVLT5nf9VKspVQ+uWvmlT7/0iefti9h6/h8Mh0vURhHVc3EUSnF/UZwQ0Wi0ULyy+zVi8wAdb4l+ymrPjLF6w8P+GV2DD9wYg/FcdpPeObnX1skzjl1KVO3wgo3QOq5It53y1nEG8Zkues/Vsl7C8TJZrNk9ecZ6s+HqRFMVuXcxggQt8XiarGFZLNlsiiErrLlkWEPp7FTwlt4eDOlj3XUDH/CcjOvChyOYVZTGV3LUGwgLsnVM63HGUC4WWRRgv1rFn8ud0FbgDF0JzDcb2yc4mLVsh6JoWdEnnLFktHsNtL91Hc0uvuy23Xe3d4FTkwfd/D3W1dxsyZ0wf/8nkqZuWziuYBv18hQ3X0a1VEicQg7DiYQMl23gYgp8swFnz9k8Otsz9AN7aSJmK4ltkWunqBiKwTbgzKCUYBM6C6RUGxcV7MKEBWYAB8yfMJ67PcD0sMjohlesj8fuT9EDQ57NQzk6Jkh+wYQ4K//pFFygivhoop2R/Go6aP1+oWiZxDiyi+UiSXkDGk/NOjRUecQfDx+yymrcGa3fDusS+4tYl73g8IenrXuDev4CSt8J57P8ENBjqs3VZo2HPp0T3Hji656IFdPlF4Fd2g8pMUPoLuz7h0FCfUeGgC1WNfxXeMbrBbJlDiSfYvYFU3w1Meik/cwZlNpLsx6Oivh9NUedccGs3ZJQPfRmdpuRrnxm9NPp8+/D9XHdHkey5JX89PGEbCZCVw4bAUFj0zXMacPpsT0L60nttbq6cu6Sf6tyfXEzU92yQ8G8Sk9M18q51TsmOipLvRJ3fbc6EUQnvRB4BpM/g0medG7iQN4SRzVP/HvREUKfRR7yTR12jbyb+0OLv6o6/vuF9zHboiL8fHl0IwekHlpUmGQ==

UPDATE

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

这是建立你的尝试<Carousel><Slide><Lightbox></Lightbox></Slide></Carousel结构。

证监会游乐场 https://sfc.vuejs.org/#eNqVVWtv2zgQ/CuEcK1tnCXKj/p1UoqihwIHXIsCRT/VAUpLK1kJRQokFbsI/N+7pCS/khZpEFtaajS7M9ylH713VRU81OCtvEgnqqgM0WDq6mYtirKSypD3TMlaAyeZkiXpBbRbsK/1jrAvvEjhiHHRJeD/It+ajdwfMd1CC4tokx8zY2CgrDgzYCMTdSkxIgRjR+8C+xcVZU60SuK1tzWm0itKYW9ACcb9RAoDwgRpndzbTy6DRJa0qOnbOrboV5N3r8Yf8H+32wVVsQeuDeP3gQBjF6uOAYO64pKlGu/G4WiGl3COX5PFNNyPR7PQ/69kOWj/gwLw/5U7YdHBXZW/zuLRayGzDV5QYDyFRRbOp2wxH8NoGc5ZEi7Hm0mYZJP5MpxO3jA2WbDlbJKmm2U6hhkusGk2WYxgMQ/HcySRceGSrT1CWx+ixvQXW2T1mi3s5E6bHxycLSe5tBVLUeobGo6oYKZW4Keg742s/A1DL3FTROqPZsuRlfmyWjB8WksOZsc4r1gFSjeVdCHNas7pkqZ0TqfhZDH7Xa7o2JwYRvS8iUTkZLq+zsmjbast2A5ckWkYVvt/1uLgmtChvKHXtK1fsiq401LggOBLWH/7AK1fWRqnycMWtvFJkc4S29d3OpAqp3gXqFqYooQAdOlvFLoOConX3vCMg+LiAyhfgUhBgfod5xX0Ca+lRUUHlHI+sb8e9EeCmC9cGj0kUnzEvTWQ2tuvVYom4q2CbEi2h3aC7diiazYPNo1GPvsuiY80/cHpWYFV7vEZUvTDs/WkVqjAtE8E7rV7eMzf7w9IfNMZ3aKDB8ZrwHdcxiCFjNXc9AffwlunGilOGRqDEHzBpFC7EmTb76XFQ2+I4hPOtF6RXtKa1TsMybdufhBXIer7xx+kzeZyky3T5K/HqzICDiI36BNwKLFcHXwftLvsmJqM17U7hxpltxdwl/hzkdj5w2SNla0Ff5MROVyyb2pjpHCSpHjPi+R+1UknHYxckMRPKOMn1raayFsSktU1vqM9EPSs9wkP357bRUJuB3au8HN2up+f7Tiyzf7cuBlwI9wuXA0wtvHxR+WZHkZFf/wzc1UIbkvTBHgwaZtq7XVHTMdxOk+tPTfIZS/dOXSBiijyXYpACefFPKPiZcXxlsTVtzbPVPNc8sNPPMSfcA==

我没有看到任何其他方法来构建你想要的东西default slot并且不使用render功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改数组索引以显示下一张幻灯片 的相关文章

随机推荐

  • Javafx 和观察者模式 - 更新 UI

    我正在尝试在 JavaFx 应用程序中实现观察者模式 我从来没有在这里问过问题 但这让我有点疯狂 本质上 我尝试使用观察者模式来监视正在解析电话号码文件的类 并在解析文件时自动更新 UI 在回答我的问题之前 这是我的代码 抽象类Observ
  • pathlib:无法从“集合”导入名称“序列”

    自从我重建项目以来已经有几天了 但是当我今天早上测试一些东西时 由于我的 Multidict 类遇到问题 我想更新我的 Werkzeug 包 我重建并开始收到此错误 17 73 14 ERROR Command errored out wi
  • OData 异常 已超出热门查询的“0”限制

    当我尝试使用 OData Web Api 查询时 我正在使用版本 4 的 OData Web API top参数 它返回我以下异常消息 URI 中指定的查询无效 已超出热门查询的 0 限制 传入请求的值为 10 我使用 Apache Ign
  • K8s 上广告的 kafka 连接休息侦听器

    我正在努力以分布式模式在 Kubernetes DockerEE 上设置 Kafka Connect 目前 我在三个相应的 k8s pod 上有一个由三个工作人员组成的集群 我面临的问题是我的员工很难相互沟通 至少我是这么认为的 当我尝试启
  • 将dustjs-helpers 与Kraken js 一起使用

    我使用 Kraken 1 0 1 和 yo kraken 创建了一个项目 模板引擎为dustjs 但我无法使用函数dustjs helpers 我的 config json express view cache false view eng
  • 在“类 xxx”上设置“xxx”时捕获意外异常:用值 [“x”,] 设置表达式“xxx”时出错

    我将一些参数传递给一个执行操作的类ModelDriven
  • SpriteKit SKView 不再在 iOS 9 中的场景之间转换

    我们有一个于 2013 年编写并发布的代码库 但在 iOS 9 中 该应用程序不再在SKScene当presentScene transition 消息已发送至我们的SKView The SKScene收到didMoveToView 消息
  • Django 1.8 迁移无法将列 id 转换为整数

    我正在将我的网站从 SQLite 后端迁移到 Postgres 后端 从项目一开始 我们就一直在运行原生 Django 风格的迁移 即不是 South 大多数迁移运行良好 但我们的应用程序出现了问题 我们在 Postgres 迁移中已经走到
  • PHP中有没有SMTP邮件传输库

    我想编写一个电子邮件传输服务 需要用 MTU 替换 sendmail postfix 我不是在寻找如何传递到发送 SMTP 服务器 如 SMTP 端口上的后缀列表 我也不需要服务器的接收部分 反弹等将转到不同的现有后缀 所有这些都是纯 PH
  • 如何从顶部栏/状态栏删除这种灰色

    我有一个应用程序 我将顶部栏 状态栏设置为上升颜色 它适用于棒棒糖上的大多数屏幕 但在其中一个屏幕上出现问题 这是一项活动 代码如下
  • 从 Jekyll 插件返回目录中的文件列表?

    我不知道如何在 jekyll 插件中创建过滤器或标签 以便我可以返回目录并循环其内容 我找到了这些 http pastebin com LRfMVN5Y http pastebin com LRfMVN5Y http snippets dz
  • Python 协议/接口的综合列表[重复]

    这个问题在这里已经有答案了 最近 我在看一些Python 习语 我发现了很多Python中使用的协议的描述 例如排序 cmp 或发电机 除此之外 还有类似的方法 hash 这是为每个对象定义的 我想 在互联网上进行一些搜索后 我还没有找到这
  • 从 UserControl 抽象子类继承

    我有一组用户控件需要具有一些类似的属性 因此 我定义了 UserControl 的一个抽象子类 它定义了这些属性并更新了 xaml cs 和 g cs 文件以从该基类继承 一切都编译良好并且运行良好 伟大的 但是 g cs 文件已生成并将重
  • 在 ASP.net 中返回纯文本或其他任意文件

    如果我要使用 PHP 中的纯文本响应 http 请求 我会执行以下操作 我如何在 ASP NET 中实现同等功能 如果你只想返回这样的纯文本 我会使用 ashx 文件 VS 中的通用处理程序 然后只需在 ProcessRequest 方法中
  • 将数据帧转换为没有列名的嵌套字典

    这是我的 pandas 数据框的示例 它包含接近 100k 行 import pandas as pd df pd DataFrame cluster 5 5 5 5 5 5 mdse item i 23627102 23627102 23
  • 检查文件夹是否有文件

    我有一个程序可以将哪些文件夹已满或为空写入数据库 现在我正在使用 bool hasFiles false Directory GetFiles path Length gt 0 hasFiles true hasFiles false 但这
  • Android:如何使用 Volley 处理来自服务器的消息错误?

    我在用Volley让我的 Android 应用程序从我的服务器获取数据 除非处理来自我的服务器的错误 否则它运行良好 当出现错误时 我的服务器会发送此响应 status 400 message Errors 2 A name is requ
  • Gradle --显示版本

    Maven 的 Gradle 模拟是什么 show version option V show version Display version information WITHOUT stopping build 输出包括 Maven Ja
  • 是否可以替换为 data.table[i, j , by] 中的 `i` 元素

    我想知道是否可以将表达式替换为idata table 的一部分 我设置了一个深度嵌套的列表 其中包含预设参数 以根据用户在闪亮的应用程序中选择的子组来执行子集设置 我怀疑这是不可能的 但我希望能以某种方式得到确认 如果不可能 我欢迎任何替代
  • 更改数组索引以显示下一张幻灯片