useCounter计数器

news/2024/7/7 23:13:25

实现一个计数器

<script setup lang='ts'>
import {ref} from 'vue'

interface UseCounterOptions {
  min?: number
  max?: number
}

/**
 * Implement the composable function
 * Make sure the function works correctly
*/
function useCounter(initialValue = 0, options: UseCounterOptions = {}) {
  const count = ref(initialValue)
  const inc = ()=>{
    if(options.max && count.value < options.max || !options.max ){
      count.value++
    }
  }
  const dec = ()=>{
    if(options.min && count.value > options.min || !options.min){
     count.value--
    } 
  }
  const reset = ()=>{
    count.value = initialValue
  }
  return { count, inc, dec, reset } 
}

const { count, inc, dec, reset } = useCounter(0, { min: 0, max: 10 })

</script>

<template>
  <p>Count: {{ count }}</p>
  <button @click="inc">
    inc
  </button>
  <button @click="dec">
    dec
  </button>
  <button @click="reset">
    reset
  </button>
</template>

inc和dec函数内的校验也可以用以下方式实现:

  const inc = () => {
    if (Object.hasOwn(options, 'max') && count.value >= options.max) {
      return;
    }
    count.value++;
  }
  const dec = () => {
    if (Object.hasOwn(options, 'min') && count.value <= options.min) {
      return;
    }
    count.value--;
  }


http://lihuaxi.xjx100.cn/news/1952260.html

相关文章

vue3 +TS axiox接口模块添加,fast mock接口访问测试

目录 一.接口地址 二.apipost 接口测试&#xff0c;能否接通 三.安装axiox 1.下载安装依赖 2.新建src/utils/request.ts文件 2.1解释&#xff1a;后续后端真实接口需要替换baseURL&#xff0c;目前没有使用配置文件&#xff0c;后续更换 3.新建src/utils/storage.ts文件 …

2024年最牛家用NAS+虚拟化方案,极低功耗

谈谈个人搭建NAS服务器有哪些需求 我有5台华为服务器、群晖、DX4600、路由器、交换机、小主机等&#xff0c;为了尝试出最牛NAS方案&#xff0c;前后投入了几万元&#xff0c;可谓是发烧友。 听我劝&#xff0c;照着这个方案执行&#xff0c;爽死你。 低功耗。NAS是长期运行的…

2024--Django平台开发-Django知识点(五)

day05 django知识点 今日概要&#xff1a; 中间件 【使用】【源码】cookie 【使用】【源码 - Django底层请求本质】session【使用】【源码 - 数据库请求周期中间件】 1.中间件 1.1 使用 编写类&#xff0c;在类型定义&#xff1a;process_request、process_view、process_…

汽车IVI中控开发入门及进阶(十二):手机投屏

前言: 汽车座舱有车载中控大屏、仪表/HUD多屏的显示能力,有麦克风/喇叭等车载环境更好的音频输入输出能力,有方控按键、旋钮等方便的反向控制输入能力,还有高精度的车辆数据等。但汽车座舱中控主机硬件计算能力升级迭代周期相对较长,汽车的应用和服务不够丰富。现在很多汽…

力扣热题100

排序 快速排序 哈希 1.两数之和 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {// unordered_map<int, int> hashtable;for (int i 0; i < nums.size(); i) {// 看能否找到 nums[i]&#xff0c;it返回索引auto it …

NLP|LSTM+Attention文本分类

目录 一、Attention原理简介 二、LSTMAttention文本分类实战 1、数据读取及预处理 2、文本序列编码 3、LSTM文本分类 三、划重点 少走10年弯路 LSTM是一种特殊的循环神经网络&#xff08;RNN&#xff09;&#xff0c;用于处理序列数据和时间序列数据的建模和预测。而在N…

最新出炉!知乎最牛最全JMeter+Ant+Jenkins接口自动化测试框架(Windows)

一:简介 大致思路&#xff1a;Jmeter可以做接口测试&#xff0c;也能做压力测试&#xff0c;而且是开源软件&#xff1b;Ant是基于Java的构建工具&#xff0c;完成脚本执行并收集结果生成报告&#xff0c;可以跨平台&#xff0c;Jenkins是持续集成工具。将这三者结合起来可以搭…

记一次生产事故排查

背景&#xff1a;刚接手一个新工程&#xff0c;是一个给国内top级医院开发的老项目&#xff0c;因为历史原因&#xff0c;代码质量略低&#xff0c;测试难度略高。 上线很久的功能&#xff0c;最近一直频繁的爆发各种问题&#xff0c;经排查发现都是因为在业务过程中im聊天账号…