Vue3【十四】watchEffect自动监视多个数据实现,不用明确指出监视哪个数据

Vue3【十四】watchEffect自动监视多个数据实现,不用明确指出监视哪个数据

Vue3【十四】watchEffect自动监视多个数据实现,不用明确指出监视哪个数据
进入立即执行一次,并监视数据变化

案例截图

WatchEffact自动监视数据

目录结构

在这里插入图片描述

代码

Person.vue

<template>
    <div class="person">

        <h1>WatchEfact自动监视多个数据</h1>
        <h2>需求:转速大于2000时候换挡位,不能超过D6挡位</h2>
        <h2>转速:{{ car.speed }}</h2>
        <h2>挡位:{{ car.level }}</h2>
        <button @click="changeSpeed">加油门</button>
        <button @click="changeLevel">加挡位</button>

    </div>
</template>

<script lang="ts" setup>
import { ref, reactive, watch, watchEffect } from 'vue';
let levels = ['P', 'R', 'N', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6']
let level = ref(0)
let car = reactive({
    speed: 0,
    level: 'P'
})
function changeSpeed() {
    car.speed += 300
}
function changeLevel() {
    car.level = levels[level.value += 1]
}

// 监视 watchEffect自动监视多个数据实现,不用明确指出监视哪个数据
watchEffect(() => {
    if (car.speed > 2000) {
        if (car.level === 'D6') {
            alert('不能超过D6挡位')
        } else {
            car.level = levels[level.value += 1]
        }
        car.speed = 1000
    }
    // 挡位最高D6挡位 
    if (level.value >= 9) {
        alert('不能超过D6挡位')
    }
    
})
</script>

<style scoped>
.person {
    background-color: #ff9e4f;
    box-shadow: 0 0 10px;
    border-radius: 30px;
    padding: 30px;
}

button {
    margin: 0 10px;
    padding: 0 5px;
    box-shadow: 0 0 5px;
    ;
}
</style>

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值