vue3.0 的 Composition API 的一种使用方法 世界今日讯
2023-06-29 17:29:37 来源:哔哩哔哩
<template> <div> 论坛列表 <div v-for="(item, index) in articleList" :key="'articleList' + index"> {{index}}:{{}} {{}} </div> <div><!--分页--> <a-pagination v-model:current="acticleCurrent" :total="50" show-less-items /> </div> </div> <div style="width:400px"> 发个帖子 标题:<a-input v-model:value=""/> 内容:<a-input v-model:value=""/> <a-button type="dashed" @click="sendArticle" >发表帖子</a-button> </div></template>
上面的模板部分没有啥区别,变化部分在js代码。我们可以先写一个帖子列表的管理类,包含帖子列表的数据,和依据页号加载数据的方法。
代码如下:
(相关资料图)
// 帖子列表的管理类const manageArticleList = () => { const articleList = ref([ { title: '这是帖子', viewCount: 100, sendTime: '2020-10-20' } ]) // 依据页号加载帖子列表 const loagActicleListByPage = (pageIndex) => { // alert(pageIndex) = [ { title: '这是新加载的帖子帖子', viewCount: 100 + parseInt(pageIndex), sendTime: '2020-10-20' } ] } return { articleList, loagActicleListByPage }}
再写一个分页的管理类(使用antdv的a-pagination),代码如下
// 分页管理类const manageActiclePage = () => { const acticleCurrent = ref(0) return { acticleCurrent }}
最后我们可以在setup里面把这两个管理类给结合起来,一起返回给view。
export default { setup () { // 引入查询管理 const { articleList, loagActicleListByPage } = manageArticleList() // 引入分页管理 const { acticleCurrent } = manageActiclePage() // 监听页号变化,加载数据 watch(acticleCurrent, (newValue, oldValue) => { loagActicleListByPage(newValue) }) // 返回给view return { articleList, acticleCurrent, } }}
在setup里面,监听 acticleCurrent 页号变化,调用 manageArticleList 的 loagActicleListByPage 事件,加载数据。当然也可以有其他的组合方式,这里只是举个简单的例子。
这样代码可以根据业务逻辑分散开,便于扩展和维护,比如我们要加一个查询功能,那么可以在 manageArticleList 里面加个 loagActicleListByQuery 的事件。
最后的效果就是,代码依据业务逻辑,完全分散成多个管理类,setup只需要负责加载和整合即可,setup里面也不会有很多代码。
管理类应该可以写在单独的js文件里面,比如我们把表单的js代码写在单独的js文件里面:()
import { ref } from 'vue'// 帖子列表的管理类export function manageArticleForm () { const modelForm = ref( { title: '这是帖子标题', content: '帖子内容', sendTime: '2020-10-20' } ) // 依据页号加载帖子列表 const sendArticle = () => { // 调用axios 向后端提交 alert('假装发表成功了。。。') } return { articleForm: modelForm, sendArticle }}
然后在views里面用import引入
import { manageArticleForm } from './'
在setup里面设置如下:
setup() { ...... // 表单 const { articleForm, sendArticle } = manageArticleForm() // 返回给view return { ...... articleForm, sendArticle, ...... }}
关键词:
[责任编辑:]
相关阅读
- (2023-06-29)vue3.0 的 Composition API 的一种使用方法 世界今日讯
- (2023-06-29)机械表和石英表的区别是啥_机械表和石英表的区别
- (2023-06-29)Kewaunee Scientific(KEQU.US):2023年Q4财报实现营收5398.6万美元
- (2023-06-29)全球要闻:“验瓜师”火了!“听音辨瓜”究竟有何科学依据?
- (2023-06-29)百事通!香蕉榨汁喝有什么效果呢
- (2023-06-29)观速讯丨全国冠军赛女子400米栏,广东名将莫家蝶夺冠
- (2023-06-29)被印度诈骗88亿、又反被索赔21亿?上海电气声明:严重歪曲事实 环球快资讯
- (2023-06-29)全球热点!我国覆盖面最广的省间电力现货交易系统投运
- (2023-06-29)网友发文称被扬州一警察强奸,警方通报|当前讯息
- (2023-06-29)晚上精液经常外溢什么情况_精液里带血是什么情况
- (2023-06-29)如何快速粘贴复制到整列_如何快速粘贴复制
- (2023-06-29)当前要闻:范立川_关于范立川的简介
- (2023-06-29)当前热议!新业态拓展就业新前景
- (2023-06-29)a4怎么打印成a3双面小册子(a4怎么打印成a3双面)
- (2023-06-29)郭嘉之死_郭嘉怎么死的
- (2023-06-29)猫车是什么意思_猫车_世界速看
- (2023-06-29)天天实时:月亏月盈_月亏
- (2023-06-29)mp4格式转换器怎么用?(转换mp4格式转换器)|今日聚焦
- (2023-06-29)世界焦点!海贼王雷利vs黄猿(海贼王雷利)
- (2023-06-29)急板令·道西归迎鸾镇头
- (2023-06-29)重点聚焦!方乔_关于方乔简介
- (2023-06-29)昆虫有什么_昆虫的种类介绍
- (2023-06-29)合金材料有哪些_合金材料 全球速看料
- (2023-06-29)mp3连电脑只显示充电_mp3连接电脑只充电不显示设备
- (2023-06-29)海陆空全领域先行者GARMIN佳明推出两款户外运动智能腕表 全球动态
- (2023-06-29)全球热推荐:u盘装系统开机会怎么样(u盘装系统开机按f几)
- (2023-06-29)深圳华润中心·万象城(关于深圳华润中心·万象城介绍) 微动态
- (2023-06-29)世界看点:票务市场秩序亟待规范
- (2023-06-29)世界快报:欧佩克再度将三大新闻机构拒之门外
- (2023-06-29)6月28日基金净值:银河沪深300价值指数A最新净值1.533,涨0.26%|天天时讯
机械表和石英表的区别是啥_机械表和石英表的区别
Kewaunee Scientific(KEQU.US):2023年Q4财报实现
全球要闻:“验瓜师”火了!“听音辨瓜”究竟有何科
百事通!香蕉榨汁喝有什么效果呢




