vue基础知识笔记03

vue

1.0 组件通信

什么是组件通信?

​ 组件需要跟函数一样传递参数,当组件与组件之间传递参数,就叫做组件通信。

组件的使用:

​ 组件的引入 import xx from ‘xx/xx’

​ 组件的注册 components:{}

​ 组件的使用 <组件名 /> 如果函数没有定义参数,那就是写死的,该函数没有太大的意义,组件也是如此

2.0 组件的分类

​ 父传子通信: 父组件向子组件传递参数

​ 子传父通信: 子组件向父组件传递参数

​ eventBus: 兄弟、子孙等等之间通信

注意:怎么区分父组件?

​ 只要在我的页进行了组件的引入,组件的注册,并且在template中使用了组件,我就是你爸爸

3.0 父子组件通信

​ 怎么传参?

​ 在父组件页面的子组件标签上,添加自定义的属性

<tempalte>
    <son  属性1="这是写死的值" :属性2="表达式" />
</template>

​ 怎么接收?

​ 在子组件props接收父组件传进来的数据

<tempalte>
    {{message}} ---- {{ 属性1 }}---- {{ 属性2 }}
</template>
<script>
    export default {
		// 父传子参数的接收
		// 写法一
		props:['属性1''属性2']// 写法二 (推荐)  
        // 可以对传入的数据进行限制,类型、是否必传、默认值
        props:{
            属性1:{
                required:true// 是否必传
                type:构造函数, // Array,Object,Number,String,Boolean // 传入的类型
                default:'' // 默认值
            },
            属性2: {
                	type: Number || String || Boolean 
                    default:0    ||   ''   || false
            	  },
                  {// 数组
                      type:Array,
                      default:()=>{
                         return []
                      }
                  }{// 对象
                      type:Object,
                      default:()=>{
                         return {}
                      }
                  }
        }
        data(){
            return {
                message:'xxx'
            }
        }
	}
</script>

4.0 子父组件通信

​ 子组件向父组件传递参数不能直接传,子组件只能通过触发自定义事件进行传递,在父组件通过触发自定义事件进行参数的接收

怎么传递? 通过方法this.$emit(‘自定义事件’,参数)

fun(){
   	this.$emit('自定义事件',{参数,参数1,参数2})
   	this.$emit('自定义事件',参数,参数1,参数2)
}

怎么接收? 父组件通过在标签上定义事件

<template>
    <Son @自定义事件="处理函数()" />
</template>
<script>
    methods:{
        处理函数(data){
            // 在此处赋值data
        }
    }
</script>

5.0 eventBus

​ 又叫做中央事件总线Bus

​ 实现:通过创建一个Vue实例当作中介,挂载到原型对象上,通过事件进行传递数据

​ 缺点: 维护起来成本极高,传递数据极乱

创建中介

#main
// 创建一个中介 挂载到原型对象上
Vue.prototype.$bus = new Vue()

发送信息

#A.vue
methods:{
    fun(){
        this.$bus.$emit('触发事件',参数)
    }
}

接收信息

#B.vue
created(){
    this.$bus.$on('触发事件',(参数)=>{
        	// 参数处理
    })
}

6.0 插槽

​ 什么是插槽?

​ 在子组件了留了个坑,在父组件使用子组件时填这个坑,这就是插槽

6.1 插槽的分类

​ 1、匿名插槽(默认插槽)

​ 在子组件定义的插槽

<tempalte>
    <div>
    	  <slot></slot>  // 匿名插槽
    </div>
</template>

​ 在父组件中使用插槽

<template>
    <son>
    	你要在插入到匿名插槽位置的内容
    </son>
</template>

​ 2、具名插槽

​ 在子组件定义多个具名插槽

<tempalte>
    <div>
    	  <slot name="插槽名1"></slot>  // 具名插槽
    	  <slot name="插槽名2"></slot>  // 具名插槽
    	  <slot name="插槽名3"></slot>  // 具名插槽
    </div>
</template>

​ 在父组件中使用插槽

<template>
    <son>
    	<标签 slot='插槽名1'/>
    	<组件 slot='插槽名2'/>
    	<标签 slot='插槽名3'/>
    </son>
</template>

​ 3、作用域插槽

​ 在子组件的数据通过插槽传递给父组件

发送参数

​ 在子组件插槽标签上定义自定义的属性

<slot :属性1="属性值1" :属性2="属性值2"></slot>

接收参数

​ 在父组件插槽位置 使用属性

<子组件>
    <h1 slot="插槽名" slot-scope="变量名">
        {{ 变量名.属性名 }}
    </h1>
<子组件>

7.0本地存储

通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储

localStorage(永久存储): 永久的存储在本地,除非手动销毁

//存储
localStorage.setItem(key, value);//key和value都必须是字符串。
eg:localStorage.setItem("id", 123); 
//如果需要存入的值是一个对象则需要使用JSON.stringify()转换一下,将对象先转化成字符串
eg:let params={name:'张三',age:'18',sex:'男'}
   localStorage.setItem('params',JSON.stringify(params))

//获取
localStorage.getItem(key);
eg:localStorage.getItem("id");
//获取对象,需要JSON转换一下,将字符串转化成对象
eg:let params=JSON.parse(localStorage.getItem('params'))

//删除
删除 localStorage.removeItem(key)
eg:localStorage.removeItem('params')

//清空 
localStorage.clear() (会将存储的所有数据清空)

sessionStorage(页面关闭销毁): 当页面关闭时销毁

// 存储
sessionStorage.setItem("id",123);
 
// 获取
sessionStorage.getItem("id")//相关方法同上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值