Vant 4官网例子使用与setup语法糖冲突解决方法

Barrage 弹幕 - Vant 4

例子:弹幕组件的使用

html 复制代码
export default {
  setup() {
    const defaultList = [
      { id: 100, text: '轻量' },
      { id: 101, text: '可定制的' },
      { id: 102, text: '移动端' },
      { id: 103, text: 'Vue' },
      { id: 104, text: '组件库' },
      { id: 105, text: 'VantUI' },
      { id: 106, text: '666' },
    ];

    const list = ref([...defaultList]);
    const add = () => {
      list.value.push({ id: Math.random(), text: 'Barrage' });
    };

    return { list, add };
  },
};

官网的数据处理部分使用export暴露函数写的这与 setup语法糖有冲突。

html 复制代码
<script setup>
</script>

解决方案:

去除外层暴露函数及返回。

html 复制代码
//原数据格式,官网提供。
export default {
  setup() {
    const defaultList = [
      { id: 100, text: '轻量' },
      { id: 101, text: '可定制的' },
      { id: 102, text: '移动端' },
      { id: 103, text: 'Vue' },
      { id: 104, text: '组件库' },
      { id: 105, text: 'VantUI' },
      { id: 106, text: '666' },
    ];

    const list = ref([...defaultList]);
    const add = () => {
      list.value.push({ id: Math.random(), text: 'Barrage' });
    };

    return { list, add };
  },

//处理后的,删除可以使用setup语法糖。
const defaultList = [
      { id: 100, text: '轻量' },
      { id: 101, text: '可定制的' },
      { id: 102, text: '移动端' },
      { id: 103, text: 'Vue' },
      { id: 104, text: '组件库' },
      { id: 105, text: 'VantUI' },
      { id: 106, text: '666' },
    ];

    const list = ref([...defaultList]);
    const add = () => {
      list.value.push({ id: Math.random(), text: 'Barrage' });
    };

去除外层

export default {

setup() {

return { list, add }; }, };

然后引用组件就可以愉快的玩耍了

html 复制代码
<script setup>
const defaultList = [
      { id: 100, text: '轻量' },
      { id: 101, text: '可定制的' },
      { id: 102, text: '移动端' },
      { id: 103, text: 'Vue' },
      { id: 104, text: '组件库' },
      { id: 105, text: 'VantUI' },
      { id: 106, text: '666' },
    ];

    const list = ref([...defaultList]);
    const add = () => {
      list.value.push({ id: Math.random(), text: 'Barrage' });
    };
</script>
<template>
    <van-barrage v-model="list" ref="barrage" :auto-play="false">
  <div class="video" style="width: 100%; height: 150px"></div>
</van-barrage>
<van-space style="margin-top: 10px">
  <van-button @click="add" type="primary" size="small" :disabled="!isPlay">
    弹幕
  </van-button>
  <van-button @click="toggle()" size="small">
    {{ isPlay ? '暂停' : '开始' }}
  </van-button>
</van-space>
</template>

这个是轮播图的处理例子,其他带数据的组件都可以这样处理。

冲突的原因是setup语法糖已经帮我们对数据进行暴露处理了。

相关推荐
云飞云共享云桌面5 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
UXbot5 小时前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
llz_1126 小时前
web-第四次课后作业
前端·spring boot·web
武清伯MVP7 小时前
前端跨域方案大合集
前端·javascript
一杯奶茶¥7 小时前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
小刘|7 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
星星在线7 小时前
我是怎么把页面图片流量砍掉一半的
前端·javascript
木叶子---8 小时前
前端打包出错
前端·人工智能·tensorflow
JAVA面经实录9178 小时前
前端系统化学习计划表(含完整知识思维导图)
前端·学习
本末倒置1839 小时前
开发了一个所见所得的md编辑器,致敬Typora大佬
前端