vue的一些小知识

1

在使用router-link作为代替a标签的跳转功能是,在控制台中router-link默认的标签扔是a标签

2

tag属性课将router-link制定为其他标签:如:

<router-link to="/" tag="div">

vue的slot使用

1.解决什么问题:
在hello world在组件标签Child中的span标签会被组件模板template内容替换掉,当想让组件标签Child中内容传递给组件时需要使用slot插槽;
2.使用

//父组件中
<template>
  <div class="father">
    <h3>这里是父组件</h3>
    <childslot>
      <div class="tmpl">
        <span>菜单1</span>
        <span>菜单2</span>
        <span>菜单3</span>
        <span>菜单4</span>
        <span>菜单5</span>
        <span>菜单6</span>
      </div>
    </childslot>
  </div>

</template>

<script>
  import childslot from "./childslot";
    export default {
        name: "slot",
        components:{
            childslot
        }
    }

</script>

<style scoped>

</style>

//子组件中,相当与父组件中的span标签 传给了子组件的<slot>中,所以他相当与占坑了
<template>
  <div class="child">
    <h3>这里是子组件</h3>
    <slot></slot>
  </div>
</template>

<script>
    export default {
        name: "childslot"
    }
</script>

<style scoped>

</style>

vue组件里data为什么一定是函数

1.深拷贝和浅拷贝
(1).基本数据类型是放在栈里面的,它是按值访问,在栈内存中发生复制行为时系统会为新的变量提供新值,所以两个变量互不影响
(2).引用数据类型是放在堆内存中的,它是按引用访问的,在栈内存中有一个地址是指向堆内存中的引用数据类型的,所以我们拷贝引用数据类型其实就是拷贝了栈内存中的地址,因为地址一样,他们都是指向同一个引用数据类型,所以两个变量会相互影响,这时就必须使用深拷贝了
2如果能理解深浅拷贝就可以理解 data 为什么要用函数了
在创建或注册模板的时候传入一个 data 属性作为用来绑定的数据。但是在组件中,data必须是一个函数,因为每一个 vue 组件都是一个 vue 实例,通过 new Vue() 实例化,引用同一个对象,如果 data 直接是一个对象的话,那么一旦修改其中一个组件的数据,其他组件相同数据就会被改变,而 data 是函数的话,每个 vue 组件的 data 都因为函数有了自己的作用域,互不干扰。

computer和watch

3.1 computed特性
1.是计算值,
2.应用:就是简化tempalte里面{{}}计算和处理props或$emit的传值
3.具有缓存性,页面重新渲染值不变化,计算属性会立即返回之前的计算结果,而不必再次执行函数

3.2 watch特性(监听属性的变化)
1.是观察的动作,
2.应用:监听props,$emit或本组件的值执行异步操作
3.无缓存性,页面重新渲染时值不变化也会执行

总结

当监听某个变量变化时,用watch
某个变量需要有其他属性计算得来,就用computed

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值