- 90
- 0
我学习到 Vue3 文档 “可复用的过渡” 一节(https://v3.cn.vuejs.org/guide...),把更前一点的例子改写成了过渡组件(如下),但是根据文档,说可以改写成函数式组件,但我改了不成功啊 (注:我是用自行托管方式使用 Vue 的,即 <script>导入vue.global.js)<html><head> <script src="vue.global.js"></script> <style> .list-item { display: inline-block; margin-right: 10px; transition: all 0.8s ease; /* 移除时平滑移动 */ } .list-leave-active { position: absolute; /* 移除时平滑移动 */ } .list-enter-from, .list-leave-to { opacity: 0; transform: translateY(30px); } .list-move { transition: transform 0.8s ease; /* 插入时平滑移动 */ } </style></head><body> <div id="app"> <button @click="add">添加</button> <button @click="remove">移除</button> <transition-group name="list" tag="p"> <span v-for="item in items" :key="item" class="list-item"> {{ item }} </span> </transition-group> </div> <script> const { createApp } = Vue const app = createApp({ data() { return { items: [1, 2, 3, 4, 5, 6, 7, 8, 9], nextNum: 10 } }, methods: { randomIndex() { return Math.floor(Math.random() * this.items.length) }, add() { this.items.splice(this.randomIndex(), 0, this.nextNum++) }, remove() { this.items.splice(this.randomIndex(), 1) } } }) const vm = app.mount('#app') </script></body></html>我改写的如下 (Uncaught TypeError: createElement is not a function)<html><head> <script src="vue.global.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.3.4/gsap.min.js"></script></head><body> <div id="app"> <input v-model="query" /> <my-transition-group> <li v-for="(item, index) in computedList" :key="item.msg" :data-index="index"> {{ item.msg }} </li> </my-transition-group> </div> <script> const { createApp } = Vue const app = createApp({ data() { return { query: '', list: [ { msg: '张三' }, { msg: '李四' }, { msg: '王五' }, { msg: '李六' }, { msg: '张七' } ] } }, computed: { computedList() { var vm = this return this.list.filter(item => { return item.msg.indexOf(vm.query) !== -1 }) } }, }) app.component('my-transition-group', { functional: true, render: function (createElement, context) { var data = { props: { name: 'staggered-fade', tag: 'ul', css: false, }, on: { beforeEnter(el) { el.style.opacity = 0 el.style.height = 0 }, enter(el, done) { gsap.to(el, { opacity: 1, height: '1.6em', delay: el.dataset.index * 0.15, onComplete: done }) }, leave(el, done) { gsap.to(el, { opacity: 0, height: 0, delay: el.dataset.index * 0.15, onComplete: done }) } } } return createElement('transition-group', data, context.children) } }) const vm = app.mount('#app') </script></body></html>
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
懶得熱情 普通会员 1楼
在函数式组件中,我们经常使用类和函数来构建可复用的过渡函数。以下是一个简单的例子,展示如何在函数式组件中定义一个可复用的过渡函数:
```javascript // 定义一个过渡函数,接收两个参数:两个值 function transition(value1, value2) { return (fromValue, toValue) => { // 在这里,我们可以在一个函数内部进行数据操作和转换,从而实现从值1到值2的过渡 return fromValue + toValue; }; }
// 使用示例 const MyComponent = () => { // 使用过渡函数将值1从0添加到20 return (
); };Value 1: 0
Value 2: {transition(0, 20)}
// 使用示例 ReactDOM.render(
, document.getElementById('root')); ``` 在这个例子中,
transition函数接收两个参数value1和value2,并返回一个函数,该函数在fromValue和toValue之间执行一些数据操作和转换,从而实现从值1到值2的过渡。在MyComponent组件中,我们使用这个过渡函数将value1从0添加到20,然后将结果渲染到一个<p>元素中。通过这种方式,我们创建了一个可复用的过渡函数,它可以在函数式组件中根据需要实现不同的过渡效果,从而提高组件的可复用性和可维护性。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
