vue CLI_本地存储、组件自定义事件
1、webStorage(js在浏览器的本地存储)
-
存储内容大小一般支持5MB左右(不同浏览器可能还不一样)
-
浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。
-
相关API:
①.
xxxxxStorage.setItem('key', 'value');
该方法接受一个键和值作为参数,会把键值对添加到存储中,如果键名存在,则更新其对应的值。②.
xxxxxStorage.getItem('person');? 该方法接受一个键名作为参数,返回键名对应的值。
③.
xxxxxStorage.removeItem('key');? 该方法接受一个键名作为参数,并把该键名从存储中删除。
④.
xxxxxStorage.clear()? 该方法会清空存储中的所有数据。
-
备注:
①. SessionStorage存储的内容会随着浏览器窗口关闭而消失。
②. LocalStorage存储的内容,需要手动清除才会消失。
③.xxxxxStorage.getItem(xxx)如果xxx对应的value获取不到,那么getItem的返回值是null。
④.JSON.parse(null)的结果依然是null。
localStorage
优化TodoList案例,用本地存储来存数据,只需要修改App里的配置对象的data配置项,和添加监视即可。
data(){
return{
//从本地存储里读取数据,为null就创建一个空数组
todos:JSON.parse(localStorage.getItem("todos"))||[],
}
},
watch:{
todos:{
deep:true,//开启深度监视,避免修改了数组里对象的属性watch却没有监视到。
handler(newVal,oldVal){
localStorage.setItem("todos",JSON.stringify(newVal));
}
}
},
2、组件的自定义事件
-
一种组件间通信的方式,适用于:子组件 ===> 父组件
-
使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)。
-
绑定自定义事件:
-
第一种方式,在父组件中:
或 -
第二种方式,在父组件中:
...... mounted(){ this.$refs.xxx.$on('atguigu',this.test) } -
若想让自定义事件只能触发一次,可以使用
once修饰符,或$once方法。
-
-
触发自定义事件:
this.$emit('atguigu',数据) -
解绑自定义事件
this.$off('atguigu') -
组件上也可以绑定原生DOM事件,需要使用
native修饰符。 -
注意:通过
this.$refs.xxx.$on('atguigu',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!
src\App.vue
{{msg}}:{{studentName}}
src\components\School.vue
学校名称:{{name}}
地址:{{address}}
src\components\Student.vue
学生姓名:{{name}}
年龄:{{age}}