当前位置: 首页 > news >正文

【Vue3入门1】02- vue3的基本操作(上)

本文介绍vue3中的一些方法的操作。

目录

1. 绑定事件 v-on

2. 按键修饰符

3. 显示和隐藏 v-show

4. 条件渲染 v-if

5. 条件渲染if-else


1. 绑定事件 v-on

点击事件 v-on:click=" 发生事件 "

<body>

    <div id="app">
        {{ msg }}     

        <h2>{{ web.url }}</h2>
        <h2>{{ web.user }}</h2>

        <!-- 3.v-on 为button按钮绑定点击事件 -->
        <!-- 4.当点击页面的按钮时,原网址就会进行修改并显示在页面上 -->
        <button v-on:click="eidt">修改</button>
        <br>
        <!-- 5.v-on:的简写为 @ -->
        <button @click="eidt">修改简写版</button>

    </div>
    <script type="module">
        // 以模块化开发为例
        import { createApp,reactive } from './vue.esm-browser.js'
            createApp({
                setup(){
                    // 设置响应的数据和方法
                    const web = reactive({
                        url:'baidu.com',
                        user: 0
                    })

                    // 1.定义一个web的方法来修改网站的网址
                    const eidt = () => {
                        web.url = 'www.baidu.com';
                    }
                    return {
                        msg:'success',  // 响应成功
                        web,  // 响应式数据
                        // 2.方法添加至return语句来返回
                        eidt
                    }

                }
            }).mount("#app")  // 将其挂载到 div#app 元素中
    </script>
</body>

2. 按键修饰符

以按键 enter 为例

按下按键时 user 自动添加响应数量

<body>
    <div id="app">
        {{ msg }}     
        <h2>{{ web.url }}</h2>
        <h2>{{ web.user }}</h2>
        <button v-on:click="eidt">修改</button>
        <br>
        <button @click="eidt">修改简写版</button>

        <hr>
        <!-- 3.给add方法设置一个事件 当按下enter键并松开(keyup)时 调用add方法 通过return返回结果 -->
        <input type="text" @keyup.enter = "add(40,60)">
        <!-- 4.按下文本框时 有焦点 有光标闪烁,此时再按下enter并松开才有效,不点击文本框无效 -->

    </div>
    <script type="module">
        // 以模块化开发为例
        import { createApp,reactive } from './vue.esm-browser.js'
            createApp({
                setup(){
                    // 设置响应的数据和方法
                    const web = reactive({
                        url:'baidu.com',
                        user: 0
                    })

                    // 1.设置一个add方法,来计算a,b两个网站新增的用户数
                    const add = (a,b) => {
                        web.user = a+b;

                    }
                    const eidt = () => {
                        web.url = 'www.baidu.com';
                    }
                    return {
                        msg:'success',  // 响应成功
                        web,  // 响应式数据
                        eidt,
                        // 2.返回add方法
                        add
                    }
                }
            }).mount("#app")  // 将其挂载到 div#app 元素中
    </script>
</body>

此时按下按键enter,页面显示100,但是反复点击并松开enter一直是100不变

怎么样才能每松开一次enter就+100

可以直接在add方法中设置,每按一次在原先基础上 +100

const add = (a,b) => {
     web.user += a+b;
}

除了回车外,还可以设置其他 比如:空格、Tab键、任意键、组合键

空格: <input type="text" @keyup.space="add(20, 30)"> <br>

Tab: <input type="text" @keydown.tab="add(10, 20)"> <br> 

keydown原因:按下Tab后,光标会下移而不在本文本框内

任意键w: <input type="text" @keyup.w="add(5, 10)"> <br>

组合键:@keyup.X.Y=" 事件 "

Ctrl + Enter <input type="text" @keyup.ctrl.enter="add(40, 60)"> <br>

Ctrl + A <input type="text" @keyup.ctrl.a="add(20, 30)">


3. 显示和隐藏 v-show

<body>
    <div id="app">
        <!-- 当前显示状态是true / false -->
        <h3>{{ web.show }}</h3> 
        <!-- 当前显示状态 -->
        <!-- 6.标签p设置了v-show 来控制一段文字的显示状态 -->
        <!-- 7.web.show代表布尔值 决定是否显示  -->
        <p v-show="web.show">baidu.com</p>

        <!-- 4.设置一个button来切换show,每次点击按钮后调用toggle方法 并将结果通过return返回给标签p -->
        <!-- 5.可以打开控制台观察,点击按钮后给p标签添加了一个CSS属性 style="display:none;" 且同时web.show修改为flase -->
        <button @click="toggle">点击切换显示状态</button>
    </div>
    <script type="module">
        // 模块化开发为例
        import { createApp, reactive } from './vue.esm-browser.js'
        createApp({
            setup() {
                // 定义一个reactive类型的响应数据
                const web = reactive({
                    show: true  // 布尔类型的show 初始为true
                })
                // 1.定义一个可以切换show状态的方法 toggle
                const toggle = () => {
                    web.show = !web.show  
                    // 2.将!show赋值给show 实现每次点击按钮都是之前状态的反状态
                }
    
                return {
                    web,
                    toggle   // 3.返回toggle方法
                }
            }
        }).mount("#app")
    
    </script>
</body>

4. 条件渲染 v-if

<body>
    <div id="app">
        <!-- 当前显示状态是true / false -->
        <h3>{{ web.show }}</h3> 
        <p v-show="web.show">baidu.com</p>
        <!-- 1.新增一个p标签 并添加 v-if-->
        <!-- v-if是渲染条件,条件为true时渲染 false时不渲染 -->
        <!-- 虽然v-if也可以切换显示状态 但是不适合频繁切换 -->
        <!-- 可以F12发现,每次切换状态,会在DOM中添加或删除元素 -->
        <p v-if="web.show">www.baidu.com</p>
        <button @click="toggle">点击切换显示状态</button>
    </div>
    <script type="module">
        // 模块化开发为例
        import { createApp, reactive } from './vue.esm-browser.js'
        createApp({
            setup() {
                // 定义一个reactive类型的响应数据
                const web = reactive({
                    show: true  // 布尔类型的show 初始为true
                })
                // 可以切换show状态的方法 toggle
                const toggle = () => {
                    web.show = !web.show  
                    // 将!show赋值给show 实现每次点击按钮都是之前状态的反状态
                }
                return {
                    web,
                    toggle
                }
            }
        }).mount("#app")
    </script>
</body>

5. 条件渲染if-else

其实就是各种条件判断来实现显示不同状态

<body>
    <div id="app">
        <!-- 当前显示状态是true / false -->
        <h3>{{ web.show }}</h3> 
        <p v-show="web.show">baidu.com</p>
        <p v-if="web.show">www.baidu.com</p>
        <button @click="toggle">点击切换显示状态</button>

        <!-- 下面是 if else 的应用 -->
        <!-- 2.在页面定义一个新标签:新网站,并为其添加 v-if -->
        <p v-if="web.user < 1000">新网站</p>
        <!-- 当用户数小于1000时显示新网站 -->

        <!-- 3.再定义一个新网站:优秀网站,条件为用户 [1000,10000) -->
        <p v-else-if="web.user >= 1000 && web.user < 10000">优秀网站</p>

        <!-- 4.资深网站标签,条件为除了上述所有条件的其他条件 -->
        <p v-else=></p>
    </div>
    <script type="module">
        // 模块化开发为例
        import { createApp, reactive } from './vue.esm-browser.js'
        createApp({
            setup() {
                // 定义一个reactive类型的响应数据
                const web = reactive({
                    show: true,  // 布尔类型的show 初始为true
                    // 1.响应式数据添加一个元素 用户user
                    user: 500  // 初始为500
                })
                // 可以切换show状态的方法 toggle
                const toggle = () => {
                    web.show = !web.show  
                    // 将!show赋值给show 实现每次点击按钮都是之前状态的反状态
                }
                return {
                    web,
                    toggle
                }
            }
        }).mount("#app")
    </script>
</body>

本文介绍vue3中的一些方法的操作。

相关文章:

  • 【商城实战(57)】商城数据迁移与升级实战:开启电商新征程
  • 算法|2025最强优化算法
  • Linux用户组管理深度解析
  • 练习:运动计划
  • C++继承机制:从基础到避坑详细解说
  • 学习Stable Diffusion
  • 深度解读DeepSeek:源码解读 DeepSeek-V3
  • 动态规划-基础
  • ESP8266 RTOS SDK 使用make命令编译出现Permission denied问题的解决方法
  • Ubuntu 14.10 Desktop (i386):经典 32 位操作系统的回顾与指南(附安装包)
  • 基于yolov11的防震锤缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • WSL 环境桥接与雷达通信配置笔记
  • APM 仿真遥控指南
  • 音频录制小妙招-自制工具-借助浏览器录一段单声道16000采样率wav格式音频
  • ARM架构薄记2——ARM学习架构抓手(以ARMv7为例子)
  • 元音辅音及其字母组合发音
  • 基于STM32进行FFT滤波
  • Python 常用内建模块-urllib
  • LINUX基础 [二] - 进程概念
  • 简单实用!百度AI + Raphael AI = 免费生图
  • 美政府被曝下令加强对格陵兰岛间谍活动,丹麦将召见美代办
  • 西安碑林博物馆票价将调至85元,工作人员:10元属于改扩建期间惠民票
  • 央行:增加科技创新和技术改造再贷款额度3000亿元
  • 碧桂园服务:拟向杨惠妍全资持有的公司提供10亿元贷款,借款将转借给碧桂园用作保交楼
  • 习近平致电祝贺默茨当选德国联邦总理
  • 厦大历史系教授林汀水辞世,曾参编《中国历史地图集》