Vue

computed 计算属性


computed的结果会被缓存,除非依赖的响应式属性变化才会重新计算,主要当做属性来使用。

  var vm = new Vue({
    el: '#app',
    computed: {
      name() {
        return 111
      }
    }
  })

watch 监听属性

被监听的属性值一发生变化就会触发 watch

  var vm = new Vue({
    el: '#app',
    data: {
      name: 'aaa'
    },
    watch: {
      'name': function (newVal, oldVal) {
          console.log(newVal)   //  最近变化的新值
          console.log(oldVal)   //  以前的旧值
       }
    }
  })

父子组件传递数据

(1) 子组件获取父组件的数据

  <div id="app">
    <child :sendMsg="msg"></child>
  </div>
var child = {
  template: '<input @click="getMsg">  猜我说了啥   {{ sendMsg }}   </input>',
  data () {},
  methods: {
    getMsg() {
       console.log( this.sendMsg  )
      }
  },
  props: ['sendMsg']
}
var  vm = new Vue({
  el: '#app',
  data: {
    msg: '媛问:猿哥一起嗨啊'
  },
  components: {
    child
  }
})

(2)子组件获取父组件的方法 并向父组件传递数据。

  <div id="app">
    <child @sendWay="way"></child>
  </div>
var child = {
  template: '<input>   </input>' ,
  data() {
    return {
      title: '猿'
    }
  },
  methods: {
    getWay() {
      this.$emit('sendWay', this.title)
    }
  }
}


var vm = new Vue({
  el: '#app',
  data: {
    from: ''
  },
  methods: {
    way(t) {
      this.from = t
    }
  }
})

ref 获取DOM 元素 和 组件

获取DOM元素

<div>
  <h3 ref="txt">丫丫滴滴啪啪</h3>
</div>
var vm = new Vue({
    el: '#app',
    data: {
        
    },
    methods: {
      getElement(){
        this.$refs.txt.innerText    //   输入h3 的文本内容
      }
    }
})

获取组件

  var tpl = {
    template: '<h1 ref="child">子组件</h1>',
    data () {
      return {
        some: '一点东西'
      }
    },
    methods: {
      way () {
          console.log('噜噜噜')
       }
    }
  }
  
  var vm = new Vue({
    el: '#app',
    data: {},
    methods: {
      getChild () {
          this.$refs.child.innerText        //   子组件
          this.$refs.child.some      //  获取子组件中定义的数据    ‘一点东西’
          this.$refs.child.way()    //   获取子组件中的方法,  '噜噜噜'
        }
    },
    components: {
      tpl
    }
  })

Router

  <div class="app">
    <!-- 相对于a 标签, tag属性可以改变元素的状态,不影响跳转 --> 
    <router-link to="/login" tag="button">登录</router-link>  
    <router-link to="/register" tag="p">注册</router-link>
    <!-- 占位符  路由组件将放在这里显示 -->
    <router-view></router-view>
  </div>
var login = {
      template: '<h1>登录组件</h1>',
    }
    var register = {
      template: '<h1>注册组件</h1>'
    }

    var router = new VueRouter({
      routes: [
        // component 必须是组件的模板对象,不能是组件的引用名称
        {path: '/login', component: login},
        {path: '/register', component: register}
      ]
    })

    var vm = new Vue({
      el: '.app',
      data: {},
      
      router: router   // 暴露在 vm 实例对象
    })

路由 redirect 重定向

  {path: '/', redirect: '/login'},

组件间切换的动画效果:

组件过渡过程中,会有四个CSS类名进行切换,这四个类名与transition的name属性有关,比如name="fade",会有如下四个CSS类名:

  • fade-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。
  • fade-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成后移除。
  • fade-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立刻删除。
  • fade-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成后被删除。
  • in-out(mode默认in-out模式):新元素先进入过渡,完成之后当前元素过渡离开。
  • out-in:当前元素先进行过渡离开,离开完成后新元素过渡进入。
  <style>
    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translateX(100px)   
    }

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

  <div class="app">
    <router-link to="/login" tag="button">登录</router-link>
    <router-link to="/register" tag="p">注册</router-link>
    <!-- 占位符  路由组件将放在这里显示 -->
    <transition mode="out-in">   
      <router-view></router-view>
    </transition>
  </div>

路由传参1

  <router-link to="/login?id=111">  登录 </login>

获取参数

  this.$route.query.id    //  id= 111
image.png

路由传参2

    <router-link to="/login/222" tag="button">登录</router-link>
    <router-link to="/register/333" tag="p">注册</router-link>
routes: [
        // component 必须是组件的模板对象,不能是组件的引用名称
        {path: '/', redirect: '/login'},
        {path: '/login/:id', component: login},
        {path: '/register/:id', component: register}
      ]
    })
created() {
        console.log(this.$route.params.id)    // 222 
      },
image.png

使用render 渲染组件

我们不光可以使用components渲染组件,还可以用 render 属性来渲染组件
看代码:

html:

  <div class="app">
    <h2>render 会替换掉整个元素</h2>
  </div>

js:

  var com = {
    template: '<div>这是一个登陆组件</div>'
  }
  var vm = new Vue({
    el: '.app',
    render: function (createElement) {
      return createElement(com)  // createElement 是一个函数 参数是模板对象 , 返回的结果将替换 el 指向的元素
    }
  })

与components不同的是 render属性会覆盖整个dom 元素,只能放一个组件,components 却可以放多个组件

文件的导入和导出

es6 提供了文件的导入和导出,但是不能直接通过浏览器运行,需要借助bable 进行转码,才可以使用
export default : 将文件导出

test.js :

  export default {
    name: '张三',
    age: 20
  }

import : 导入文件
main.js :

  import file from './test.js'

使用 export default 只能导出一个对象

export
按需要导出成员,可以向外暴露多个成员

test.js:
  export var title = '一只猿'   // 导出成员
  export var o = '一只媛'   
  import {title, o} from './test.js'   // 名称必须一致

使用 {} 的方式来接收多个成员,不需要的成员可以不用接收 {title}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 《败荷》 败荷枯枝残叶, 曾想花开不谢; 秋凉几番吹过, 怎敌寒霜凛冽。 都有风华年少, 也经阴晴圆缺; 末负悦人...
    土狼22阅读 127评论 0 0
  • 苍耳7阅读 97评论 0 0
  • 其实,我正如我喜欢的样子度过了今天。 自由潇洒,而又富有影响力。 头脑又清醒,又有确定的目标又能推进达成。 总结经...
    陈龙伟C阅读 158评论 0 0
  • Day2作业 1.记录自己一天的能量状态? 昨天一天的能量状态:感觉还是在平和喜悦中度过的。 2.记录自己说话传递...
    娟_8849阅读 195评论 0 0