Vue学习总结-watch

watch-监视文本框变化

<template>
  <div id="app">
    <input type="text" v-model="firstname">+
    <input type="text" v-model="lastname">=
    <input type="text" v-model="fullname">
  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {
                firstname: '',
                lastname: '',
                fullname: '',
            }
        },

        methods: {},
        watch: {
            //监视data中指定数据的变化,然后触发watch中对应的function处理函数
            'firstname': function (newVal, oldVal) {
                console.log('监视到了firstname变化')
                this.fullname = newVal + '-' + this.lastname
            },
            'lastname': function (newVal, oldVal) {
                console.log('lastname')
                this.fullname = this.firstname + '-' + newVal

            }
        }
    }
</script>

<style scoped>
  h1 {
    margin: 0;
    padding: 0;
    font-size: 16px;
  }

  .container {
    display: flex;
    height: 600px;

  }

  .router-link-active, .myActive {
    color: red;
    font-weight: 100;
    font-size: 20px;
    text-decoration: underline;
  }

  .el-header, .el-footer {
    background-color: #B3C0D1;
    color: #333;
    text-align: center;
    line-height: 60px;
  }

  .el-main {
    background-color: #E9EEF3;
    color: #333;
    text-align: center;
    line-height: 700px;
  }

  .v-enter,
  .v-leave-to {
    opacity: 0;
    transform: translateX(140px);
  }

  .v-enter-active,
  .v-leave-active {
    transition: all 0.5s ease;
  }
</style>

watch-监视路由地址的改变

new Vue({
  el: '#app',
  router,
  watch:{
    '$route.path':function (newVal,oldVal) {
      console.log(newVal+'---'+oldVal)
      if(newVal === '/HelloWorld')
      {
        console.log('欢迎进入HelloWorld')
      }
      if(newVal === '/About')
      {
        console.log('欢迎进入About')
      }
    }

  },
  components: { App },
  template: '<App/>'
})

computed-计算属性的使用和3个特点

//可定义一下属性,这些属性叫做【计算属性】,其本质就是一个方法
只不过,我们在使用这些属性的时候,是把它们的名称直接当做属性使用,并不会把属性当方法调用
注意:
1 计算属性,在引用的时候一定不要加()调用,直接把它当做普通属性去使用
2 只要计算属性在这份function内部,所用到的任何data中的数据发生变化,就会立即从新计算这个计算属性的值
3 计算属性的求值结构会被缓存起来,方便下次直接使用,如果计算属性方法中依赖的任何数据,都没有发生变化,则不会从新求值

<template>
  <div id="app">
    <input type="text" v-model="firstname">+
    <input type="text" v-model="lastname">=
    <input type="text" v-model="fullname">
<!--    <router-link to="/HelloWorld">你好</router-link>-->
<!--    <router-link to="/About">关于</router-link>-->
<!--    <router-view></router-view>-->
  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {
                firstname: '',
                lastname: '',
                // fullname: '',
            }
        },
        methods: {},
        computed: {
            //可定义一下属性,这些属性叫做【计算属性】,其本质就是一个方法
            //只不过,我们在使用这些属性的时候,是把它们的名称直接当做属性使用,并不会
            //把属性当方法调用
            //注意:1 计算属性,在引用的时候一定不要加()调用,直接把它当做普通属性去使用
            //2 只要计算属性在这份function内部,锁用到的任何data中的数据发送百脑汇
            //就好立即从新计算这个计算属性的值
            //3 计算属性的求值结构会被缓存起来,方便下次直接使用,如果计算属性方法中依赖的任何数据,都没有发生变化,则不会从新求值
            'fullname': function () {
                return this.firstname + '---' + this.lastname

            }
        }
    }
</script>

<style scoped>

  /*.router-link-active, .myActive {*/
  /*  color: red;*/
  /*  font-weight: 100;*/
  /*  font-size: 20px;*/
  /*  text-decoration: underline;*/
  /*}*/

  /*.el-header, .el-footer {*/
  /*  background-color: #B3C0D1;*/
  /*  color: #333;*/
  /*  text-align: center;*/
  /*  line-height: 60px;*/
  /*}*/

  /*.el-main {*/
  /*  background-color: #E9EEF3;*/
  /*  color: #333;*/
  /*  text-align: center;*/
  /*  line-height: 700px;*/
  /*}*/

  /*.v-enter,*/
  /*.v-leave-to {*/
  /*  opacity: 0;*/
  /*  transform: translateX(140px);*/
  /*}*/

  /*.v-enter-active,*/
  /*.v-leave-active {*/
  /*  transition: all 0.5s ease;*/
  /*}*/
</style>

watch、computed、methods的对比

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值