博客列表 >条件渲染v-if v-show、计算属性和监听器

条件渲染v-if v-show、计算属性和监听器

手机用户1576673622
手机用户1576673622原创
2021年06月16日 17:41:421094浏览

1.条件渲染

v-if 与 v-show
v-if:v-if 指令和原生 js 中的 if 语句的功能是一样的,作为条件约束,执行哪些功能。同样有作为单分支和多分支条件的语句。

  1. <!-- 单分支 -->
  2. <p v-if="flag">{{msg}}</p>
  3. <button
  4. @click="flag = !flag"
  5. v-text="tips = flag ? `隐藏` : `显示`"
  6. ></button>
  7. <!-- 多分支 -->
  8. <p v-if="point > 1000 && point < 2000">{{grade[0]}}</p>
  9. <p v-else-if="point >= 2001 && point < 3000">{{grade[1]}}</p>
  10. <p v-else-if="point >= 3001 && point < 4000">{{grade[2]}}</p>
  11. <p v-else-if="point >= 4000">{{grade[3]}}</p>
  12. <p v-else>{{grade[4]}}</p>

v-show:v-show 指令和 v-if 指令的功能差不多,区别最大的一点是使用 v-dom 的元素,在 dom 树加载完成之后就会存在,只是显示不显示的问题,而 v-if 语句则不一样,它是根据条件判断,然后再从 vue 中渲染到页面上。v-show 的用处是可以定时的显示一些准备好的东西。好处是比起 v-if 来说,v-show 是本来就存在的 dom 元素,页面不会进行多次的渲染刷新。
功能:v-show 是在 dom 元素创建之后就存在了,只是显示不显示的决定在你,你可以设置什么时候显示,这样在一些活动倒计时的情况中,就直接可以更换页面,而不显得突兀,也不需要页面刷新。

键盘修饰符

  1. <script>
  2. const vm = new Vue({
  3. el: document.querySelector(".app"),
  4. data() {
  5. return {
  6. list: [],
  7. };
  8. },
  9. // 事件方法
  10. methods: {
  11. submit(ev) {
  12. // console.log(ev.key);
  13. // console.log(ev.target.value);
  14. // if (ev.key === "Enter") {
  15. // this.list.unshift(ev.target.value);
  16. // ev.target.value = null;
  17. // }
  18. // 使用了键盘修饰符: enter
  19. this.list.unshift(ev.target.value);
  20. ev.target.value = null;
  21. },
  22. },
  23. });
  24. </script>

2.计算属性

计算属性使用 computed 声明,本质上就是访问器属性,最终会和 data 合并,所以不要和 data 中已有属性重名。

  1. <div class="app">
  2. <p>
  3. 数量:
  4. <!-- <input
  5. type="number"
  6. v-model="num"
  7. style="width: 5em"
  8. min="0"
  9. @change="calc"
  10. /> -->
  11. <input type="number" v-model="num" style="width: 5em" min="0" />
  12. </p>
  13. <p>单价: {{price}} 元</p>
  14. <!-- <p>金额: {{num * price}} 元</p> -->
  15. <!-- <p>金额: {{res}} 元</p> -->
  16. <!-- <p>金额: {{res}} 元</p> -->
  17. <!-- 计算属性,本质上就是原生的访问器属性 -->
  18. <p>金额: {{amount}} 元</p>
  19. </div>
  20. <script>
  21. const vm = new Vue({
  22. el: document.querySelector(".app"),
  23. data() {
  24. return {
  25. num: 0,
  26. price: 50,
  27. res: 0,
  28. };
  29. },
  30. // 计算属性: 最终会和data合并,所以不要和data中已有属性重名
  31. // 使用computed声明
  32. computed: {
  33. // amount() {
  34. // return this.num * this.price;
  35. // },
  36. // 访问器属性有getter/setter
  37. // 计算属性默认是getter
  38. amount: {
  39. get() {
  40. return this.num * this.price;
  41. },
  42. set(value) {
  43. console.log(value);
  44. if (value > 1000) this.price = 40;
  45. },
  46. },
  47. },
  48. });
  49. vm.amount = 1001;
  50. </script>

侦听器
侦听器属性使用 watch 声明,它侦听的是某一个属性的值的变化,它的属性名与 data 中要监听的属性同名。侦听器属性更加注重的是实时性,但是它没有计算属性灵活.

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议