首页 > 其他分享 >vue3 v-model取代vue2 .sync(个人使用记录)

vue3 v-model取代vue2 .sync(个人使用记录)

时间:2023-03-20 18:33:55浏览次数:50  
标签:const val pageSize sync pageNum vue2 vue3 import computed

例子:封装el-pagination组件

<script lang="ts" setup>

import {computed} from "vue";

const emit = defineEmits<{
 ( e:'update:pageSize',pageSize:number):void //pageSize要和父组件v-model:pageSize同一个名字
 ( e:'update:pageNum',pageNum:number):void
 ( e:'paginationSize'):void
 ( e:'pagination'):void
}>()

let pageParams = defineProps<{
  pageSize:number,
  pageNum:number,
  total:number
}>()
const limit = computed({
  get(){
   return pageParams.pageSize
  },
  set(val){
    emit('update:pageSize',val)
  }
})
const pageNo = computed({
  get(){
    return pageParams.pageNum
  },
  set(val){
    emit('update:pageNum',val)
  }
})
</script>

父组件   v-model:pageSize 要和子组件update:后面的名字一样,否则不生效

<Pagination :total="total" v-if="total" @pagination="getList" @paginationSize="getList" v-model:pageSize="queryParams.pageSize" v-model:pageNum="queryParams.pageNum"></Pagination>
<script lang="ts" setup>
import { ref, reactive, onMounted, nextTick,  } from "vue";
import { getArea } from '@/api/common'
import { getSchoolList,changeSchoolStatus } from '@/api/school'
interface tableData {
  sectionType: string
}

let total = ref(0)
const queryParams: any = reactive({
  areaId: '',
  schoolName: '',
  pageNum: 1,
  pageSize: 10
})
let tableData = ref()

const getList = async () => {
  const response = await getSchoolList(queryParams)
  tableData.value = response.data.rows
  total = response.data.total
}
const queryList = () => {
  queryParams.pageNum = 1
  getList()
}

onMounted(() => {
  getList()
})
</script>

 

标签:const,val,pageSize,sync,pageNum,vue2,vue3,import,computed
From: https://www.cnblogs.com/cstd/p/17237275.html

相关文章

  • 为什么 wait/notify 必须与 synchronized 一起使用
    注:本文转自:https://mp.weixin.qq.com/s/ZbB_4vYg6aNMDyy6KnjSnA为什么javawait/notify必须与synchronized一起使用这个问题就是书本上没怎么讲解,就是告诉我们这样处......
  • vue3 简单入门总结
    (vite+vue3)基础1.基础语法和传值问题//传值definePropsdefineEmits//父组件<template><div><Child:msg="userInfo.info"@change="change"/></Child><......
  • Vue3 + Swiper开发轮播列表组件
    Vue3+Swiper开发轮播列表组件前端开发中,轮播列表的场景并不少见,通常使用Vue+Swiper来实现,上手比较快。安装依赖直接执行npm命令npmiswiper组件编写Html模板......
  • Vue2 开发必备的 VSCode 插件
    10个vue2必备开发插件Vetur:Vue.js开发插件,提供了语法高亮、错误提示、自动补全等功能。Vue2Snippets:Vue.js2代码段,可以快速生成常用的Vue.js代码。ESLint:JavaScript......
  • vue2、等dom更新完之后再执行,获取dom元素 ref
    $nextTick作用:等Dom更新完以后再执行//等Dom更新完以后再执行this.$nextTick(()=>{varobj=newWxLogin({id:"weixin",......
  • Android AsyncTask异步任务的使用
    文章目录​​小结​​​​定义异步任务类​​​​开启异步任务​​​​参考​​小结可以使用androidAsyncTask来执行繁重的后台任务,以避免UI界面无响应,并可以实时在UI界面......
  • Vue2入门之超详细教程四-数据绑定
    1、简介数据绑定分为单向数据绑定和双向数据绑定,上一章节中出现的v-bind就属于单向数据绑定。单向绑定(v-bind):数据只能从data流向页面双向绑定(v-model):数据不仅......
  • 说说对AQS(AbstractQueuedSynchronizer)队列同步器的理解
    AQS是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),包含了实现同步器的细节(获取同步状态、FIFO同步队列)。AQS的主要使用......
  • golang  实现 sync.WaitGroup wait() 方法 超时 自动释放
    思路是把wg.wait()放到一个协程里,通过chan向外发送完成信号。外层通过一个select超时结构来控制最大超时时间。funcwaitTimeout(wg*sync.WaitGroup,timeouttime.Du......
  • synchronized 和 Lock 的区别
    Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock......