第五单元(v-if和v-show以及v-for的灵活应用 watch以及computed的区别 (常见效果)

#课程目标

  1. 精通 v-if v-else v-else-if 的使用
  2. 精通 v-show 和 v-if 的区别
  3. 精通 v-for 的使用
  4. 精通 computed 的使用
  5. 精通 watch 的使用以及和 computed 还有 method 的区别

#知识点

  1. v-if 条件渲染: v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。 v-else 在表达式返回 false 时被渲染

    <h1 v-if="awesome">Vue is awesome!</h1>
    <h1 v-else>Oh no </h1>
     

    v-else-if,顾名思义,充当 v-if 的“else-if 块”,可以连续使用:

    <div v-if="type === 'A'">
    A
    </div>
    <div v-else-if="type === 'B'">
    B
    </div>
    <div v-else-if="type === 'C'">
    C
    </div>
    <div v-else>
    Not A/B/C
    </div>
     

    在 <template> 元素上使用 v-if 条件渲染分组,最终的渲染结果将不包含 <template> 元素。

    <template v-if="ok">
    <h1>Title</h1>
    <p>Paragraph 1</p>
    <p>Paragraph 2</p>
    </template>
     

    注意点:

    • v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。
    • 类似于 v-else,v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。
  2. v-if 和 v-show 的区别: v-if 是“真正”的条件渲染,条件为真是渲染,为假是不渲染。 v-show 元素总是会被渲染,如果条件是假就会给元素添加一个 display:none 的属性, 使其隐藏。

  3. v-for 列表渲染: v-for 指令基于一个数组、对象或数字来渲染一个列表。 基本语法: v-for="item in items" v-for="(value, name) in object" v-for="num in 10"

        <ul id="example-1">
    <li v-for="item in items" v-bind:key="item.id">
    {{ item.message }}
    </li>
    </ul>
     
        var example2 = new Vue({
    el: '#example-2',
    data: {
    parentMessage: 'Parent',
    items: [
    {id: 1, message: 'Foo'},
    {id: 2, message: 'Bar' }
    ]
    }
    })


    在 <template> 元素上使用 v-for 列表渲染分组,最终的渲染结果将不包含 <template> 元素。

        <ul>
    <template v-for="item in items">
    <li>{{ item.msg }}</li>
    <li class="divider" role="presentation"></li>
    </template>
    </ul>
     

    注意点:

    1. 循环列表一般增加 v-bind:key="item.id" 这样在数据变化时提高vue的性能。
    2. v-if v-for处于同一节点,v-for 的优先级比 v-if 更高
    3. 当更改数组的数据是,不能简单使用arr[index]='value'这样的方式,因为这样修改的数据vue检测不到变化,所以页面也不会更新。应当使用经过vue包裹后的数组的变异方法:
    • push()
    • pop()
    • shift()
    • unshift()
    • splice()
    • sort()
    • reverse()

    也可以通过替换数组的方法让数据更新。

  4. 计算属性 computed 计算属性是基于当前数据进行简单的加工返回的新的数据。当计算属依赖的数据变化时它会自动计算,计算属性返回的值也会跟着变化。

    <div id="example">
    <p>Original message: "{{ message }}"</p>
    <p>Computed reversed message: "{{ reversedMessage }}"</p>
    </div>
     
    var vm = new Vue({
    el: '#example',
    data: {
    message: 'Hello'
    },
    computed: {
    // 计算属性的 getter
    reversedMessage: function () {
    // `this` 指向 vm 实例
    return this.message.split('').reverse().join('')
    }
    }
    })
     
  5. watch 的使用以及和 computed 还有 method 的区别: 虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

    <div id="watch-example">
    <p>
    Ask a yes/no question:
    <input v-model="question">
    </p>
    <p>{{ answer }}</p>
    </div>
     
    var watchExampleVM = new Vue({
    el: '#watch-example',
    data: {
    question: '',
    answer: 'I cannot give you an answer until you ask a question!'
    },
    watch: {
    // 如果 `question` 发生改变,这个函数就会运行
    question: function (newQuestion, oldQuestion) {
    this.answer = 'Waiting for you to stop typing...'
    this.debouncedGetAnswer()
    }
    }
    })
     

    watch 和computed 还有 method 的区别: computed:用于简单个数据检测,而且具有缓存功能,每次数据变更只需一次计算就可以了,并且可以监听多个属性,只要任一数据变化都会触发计算。 watch: 当需要在数据变化时执行异步或开销较大的操作时使用 watch,而且只能监听单个数据。 methods:只有调用时才会执行,没有缓存功能,每次调用都会被执行。

#授课思路

#案例和作业

  1. 使用vue完成简单的 TODOList

  1. 使用 v-if 完成 tab 切换, v-for 完成列表渲染

vue第五单元(v-if和v-show以及v-for的灵活应用 watch以及computed的区别 (常见效果) #课程目标的更多相关文章

  1. 五种典型开发周期模型(瀑布、V、原型化、螺旋、迭代)

    五种典型开发周期模型(瀑布.V.原型化.螺旋.迭代) 总结一下经常可以见到的系统开发周期模型.    在过去的几年里,可以很奇葩的碰到类似于“创业项目库”这种需求非常明确,工作量十分可控,对质量要求比 ...

  2. vue第十五单元(熟练使用vue-router插件)

    第十五单元(熟练使用vue-router插件) #课程目标 1.掌握路由嵌套 2.掌握导航守卫 #知识点 #一.路由嵌套 很多时候,我们会在一个视口中实现局部页面的切换.这时候就需要到了嵌套路由. 也 ...

  3. vue第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 )

    第八单元(组件通信 子父,父子组件通信 自定义事件 事件修饰符 v-model props验证 ) #课程目标 掌握使用props让父组件给子组件传参(重点) 掌握props属性的使用以及prop验证 ...

  4. SIP模块版本错误问题:the sip module implements API v??? but XXX module requires API v???

    系统安装了python 2.7,继续安装PyQt4,于是依次下载sip.pyqt4源码进行安装.用以下代码测试: import PyQt4.QtGui 显示出错.错误信息:the sip module ...

  5. n维向量空间W中有子空间U,V,如果dim(U)=r dim(V)=n-r U交V !={0},那么U,V的任意2组基向量的组合必定线性相关

    如题取U交V中的向量p (p!=0), 那么p可以由 U中的某一组基线性组合成(系数不全是零),同时,-p也可以由V中的某一组基线性组合成(系数不全为零) 考察p+(-p)=0 可知道,U中的这组基跟 ...

  6. react第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制)

    第五单元(事件系统-原生事件-react中的合成事件-详解事件的冒泡和捕获机制) 课程目标 深入理解和掌握事件的冒泡及捕获机制 理解react中的合成事件的本质 在react组件中合理的使用原生事件 ...

  7. vue第二十单元(vux的配置中模块modules的用法)

    第二十单元(vux的配置中模块modules的用法) #课程目标 1.什么是module? 2.怎么用module? 3.样板代码目录结构 #知识点 #1.modules 在Vue中State使用是单 ...

  8. vue第十三单元(指令的作用,指令的钩子函数)

    第十三单元(指令的作用,指令的钩子函数) #课程目标 1.了解自定义指令的应用场景 2.掌握自定义全局和局部指令 3.掌握指令的钩子函数 #知识点 #一.认识自定义指令 除了核心功能默认内置的指令 ( ...

  9. vue第十一单元(内置组件)

    第十一单元(内置组件) #课程目标 熟练掌握component组件的用法 熟练使用keep-alive组件 #知识点 #1.component组件 component是vue的一个内置组件,作用是:配 ...

随机推荐

  1. 关于Java集合框架,这篇讲的还算不错了,建议大家看看!

    集合框架 为什么要用集合而非数组: 虽然数组是保存一组对象最有效的方式,但是数组具有固定尺寸,但在写程序时并不知道将需要多少个对象.而集合能够自动地调整自己的尺寸. 打印数组时,必须使用Arrays. ...

  2. Apiview+serallizers

    1.APIVIEW使用 https://www.cnblogs.com/xiaonq/p/10124104.html ModelVIewSet是对APIView封装 ModelSerializer是对 ...

  3. C语言讲义——函数

    为实现特定目的而编写的一段可被调用的代码 简单地讲:函数就是一组语句,取了个名字 别名:子例程(routine)/方法(Method,一般面向对象的语言使用这个叫法) 函数的组成部分 以主函数为例: ...

  4. mq存储文件

    存储文件 启动broker之后我们可以看到下面这些文件 1.config包含了运行期间一些配置信息,主要包括下列信息. consumerFilter.json:主体消息过滤信息 consumerOff ...

  5. 04-Python里字符串的常用操作方法三-判断

    1. startswith(): 判断字符串是否以某个子串开始,是则返回True,否则返回False 示例: my_str = 'hello world and my and test and pyt ...

  6. bulk_create 批量插入数据

    def booklist(request): # 动态插入100条数据 for i in range(100): models.Book2.objects.create(name='第%s本书'%i) ...

  7. 三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 文章和搭建环境所需要的yml文件已收 ...

  8. C#Excel导出注意事项

    Excel 导出 1.首先在服务器中安装office ,并且要注册2.在组件服务中 设置Microsoft.excel.appliction 属性中设置自定义加network service用户并交互 ...

  9. 文艺splay,占坑等着填

    昨天CF上去就A了前三道题,然后自闭罚坐一个小时什么也没写出来23333.似乎D题人均wa3发就很烦.还是肤浅了 今天精神状态不太好,可能是晚睡的缘故,那不如明天一起写了算了 蹲一波大选结果,蹲一波s ...

  10. 第14.1节 通过Python爬取网页的学习步骤

    如果要从一个互联网前端开发的小白,学习爬虫开发,结合自己的经验老猿认为爬虫学习之路应该是这样的: 一. 了解HTML语言及css知识 这方面的知识请大家通过w3school 去学习,老猿对于html总 ...