03. Vue3 中的条件判断与循环

简介: 03. Vue3 中的条件判断与循环

在 Vue 中判断条件,咱可以用 v-if,意思就是「如果 xxx 的话,那就 xxx」。当满足条件,也就是条件返回 true 的时候,就可以做它要做的事情了。

案例 1

比如,我们想看一个「大靓仔」,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Vue</title>
    <!-- 其实,就一句即实现引入 Vue.js -->
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <!-- 第六步,展示数据 -->
    <div id="root"></div>
</body>
<script>
    // 第一步,创建一个 Vue 的实例
    Vue.createApp({
        // 第二步,提供一个 data 选项
        // 提供 seen 来保存一个 bool 值
        data() {
            return {
                seen: true
            }
        },
        // 第四步,在 methods 中提供对应方法
        methods: {
            showAndHide(){
                // 切换 bool 值
                this.seen = !this.seen
            }
        },
        
        // 第三步,在页面提供一个标签和一个按钮
        // 按钮控制 seen 的值
        template:`
            <div>
                <span v-if="seen">我是一个「大靓仔」^_^</span>
            </div>
            <p>
            <div><button v-on:click="showAndHide">显示/隐藏靓仔</button></div>
            `
    }).mount('#root'); 
</script>
</html>

运行效果:

关于「条件判断」先做一个简单的了解,更多实战案例,后面拿更多案例来分析。

我们再来了解一下 Vue 中的「循环」,咱可以用 v-for来循环遍历出数组中的元素 。

案例 2

一个小案例,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Vue</title>
    <!-- 其实,就一句即实现引入 Vue.js -->
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <!-- 展示数据 -->
    <div id="root"></div>
</body>
<script>
    // 第一步,创建一个 Vue 的实例
    Vue.createApp({
        // 第二步,提供一个 data 选项
        // 提供 poetry 数组来保存诗句内容,并返回
        data() {
            return {
                poetry : [
                    { text : '红豆生南国,'},
                    { text : '春来发几枝。'},
                    { text : '愿君多采撷,'},
                    { text : '此物最相思。'}
                ]
            }
        },
        
        // 第三步,在页面提供一个标签和一个列表
        // 其中列表用来展示诗句内容
        template:`
            <div>
                <span>你听过 王维 的《相思》吗?</span>
            </div>
            
            <ol>
                <li v-for="p in poetry">
                    {{ p.text }}
                </li>
            </ol>
            `
    }).mount('#root'); 
</script>
</html>

运行效果:

Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。比如,我们来写一个「花名登记册」吧。

案例 3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello Vue</title>
    <!-- 其实,就一句即实现引入 Vue.js -->
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <!-- 展示数据 -->
    <div id="root"></div>
</body>
<script>
    // 第一步,创建一个 Vue 的实例
    Vue.createApp({
        // 第二步,提供一个 data 选项
        // 提供 userName 用来获取输入的用户名
        // 提供 userNameList 数组用来收集所有输入的名字,循环展示
        data() {
            return {
                userName : '',
                userNameList:[]
            }
        },
        methods: {
            // 第四步,实现 RecordName() 方法,记录用户名
            RecordName(){
                this.userNameList.push(this.userName);
                this.userName = '';
            }
        },
        
        // 第三步,在页面提供一个输入框、一个按钮和一个列表
        // 输入框,用于接受用户输入的用户名,通过 v-model 能将表单输入的用户名与 data 中的 userName 双向绑定
        // 按钮,绑定 RecordName() 方法,将用户名保存至 userNameList 数组中,且再将输入框清空
        // 列表,用来展示所有用户名
        template:`
            <div>
                请输入用户名:<input v-model="userName" /> | 
                <button v-on:click="RecordName">登记用户名</button>
            </div>
            
            <ul>
                <li v-for="(name, index) in userNameList">
                    这是第 {{ index + 1 }} 名客户,名字是「 {{ name }}」
                </li>
            </ul>
            `
    }).mount('#root'); 
</script>
</html>

运行效果:

如果今天的分享,也能帮到你,点个赞,再关注一下呗,继续努力!

目录
相关文章
|
29天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
129 64
|
29天前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
110 60
|
4天前
|
JavaScript API 数据处理
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
22 3
|
1月前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
26 1
vue学习第7章(循环)
|
29天前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
33 8
|
28天前
|
存储 JavaScript 数据管理
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
31 1
|
28天前
|
JavaScript
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
39 1
|
29天前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
1月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
1月前
|
JavaScript 前端开发 API
从Vue 2到Vue 3的演进
从Vue 2到Vue 3的演进
40 0

热门文章

最新文章