vue⽅法传值到data_Vue之数据传递的⽅法1.⽗组件向⼦组件传值
⽗组件
exportdefault{
name:"App",
components:{
blockA
},
data(){return{
x:123}
},
mounted(){
setTimeout(()=>{this.x = 789;
},1000)
}
}
⼦组件
这是⼦组件
{{outData}}
name:"block-a",
props:['outData'],
watch:{
outData(newVal){
console.log("新的值是:" +newVal)
}
}
}
运⾏效果,界⾯先展⽰123,⼀秒后展⽰789,控制台仅输出了“新的值:789”。
结论:简单的数值类型能通过props动态反映到⼦组件内,⽽且能被⼦组件watch检测。
2.⼦组件向⽗组件传值
⼦组件
data () {return{//将msg传递给⽗组件
msg: "我是⼦组件的msg",
}
},
methods:{
sendMsg(){//func: 是⽗组件指定的传数据绑定的函数,this.msg:⼦组件给⽗组件传递的数据this.$emit('func',this.msg)
}
}
}
⼦组件通过this.$emit()的⽅式将值传递给⽗组件。注意:这⾥的func是⽗组件中绑定的函数名⽗组件
data () {return{
msgFormSon:"this is msg"}
},
components:{
child,
},
methods:{
getMsgFormSon(data){this.msgFormSon =data
console.log(this.msgFormSon)
}
}
}
3.路由传值
对应的路由配置模块
, {
path:'/editCardetail',
name:'editCardetail',
component: EditCardetail
},
1、使⽤$router.push 拼接参数传参
this.$router.push('/editCardetail?editType=add')
其中editType=add即为传递的参数
2、 使⽤name来确定匹配的路由,通过params来传递参数
this.$router.push({
name:'editCardetail',
params: {
editType: add
}
})
3、使⽤path来匹配路由,然后通过query来传递参数
this.$router.push({
path:'/editCardetail',
query: {
editType: add
}
})
注意path不能与params⼀起使⽤,需要通过path来匹配路由的时候,使⽤query来传参。
query要⽤path来引⼊,params要⽤name来引⼊,接收参数都是类似的,分别是ute.query.name和this. route.query.name和ute.query.name和ute.params.name。
query更加类似于我们ajax中get传参,params则类似于post,前者在浏览器地址栏中显⽰参数,后者则不显⽰
4. 通过localStorage或者sessionStorage来存储数据
localStorage的使⽤
注:vue下使⽤localStorage和H5使⽤localStorage的⽅法是⼀致的,不需要引⼊插件
1、储存
//数据
localStorage.setItem('userName','HelloWeen');
2、获取
3、删除
vuejson转对象
4、localStorage可以储存JSON对象,且没有时间限制的数据存储 ,除⾮主动删除。
//数组
var arr=[1,2,3];
localStorage.setItem("temp",arr); //会返回1,2,3
console.log(Item("temp"));//string
console.Item("temp"));//1,2,3
5、localStorage.setItem() 不会⾃动将Json对象转成字符串形式
var user= {"userName": "hello","age": 2};Item("user");//也会返回String
localStorage.setItem("user", user);//但是返回[object Object],
6、⽤localStorage.setItem()正确存储JSON对象⽅法是:
存储前先⽤JSON.stringify()⽅法将json对象转换成字符串形式
JSON.stringify() ⽅法可以将任意的 JavaScript 值序列化成 JSON 字符串
获取的时候要将之前存储的JSON字符串使⽤JSON.parse()先转成JSON对象再进⾏操作
var user= {"userName": "hello","age": 2};
user= JSON.stringify(user); //转化为JSON字符串 "{"userName":"hello","age":2}"
localStorage.setItem("user", user);//返回{"userName":"hello","age":2}
user=JSON.Item("user"));
sessionStorage的使⽤
定义和使⽤
localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据。
sessionStorage ⽤于临时保存同⼀窗⼝(或标签页)的数据,在关闭窗⼝或标签页之后将会删除这些数据。
1、⽅法
sessionStorage.key(int index) //返回当前 sessionStorage 对象的第index序号的key名称。若没有返回null。
sessionStorage.setItem(string key, string value)//该⽅法接受⼀个键名(key)和值(value)作为参数,将键值对添加到存储中;如果键名存在,则更新其对应的值。
sessionStorage.clear()//清除 sessionStorage 对象所有的项。
2、存储数据
2.1 采⽤setItem()⽅法存储
sessionStorage.setItem('testKey','这是⼀个测试的value值'); //存⼊⼀个值
2.2 通过属性⽅式存储
sessionStorage['testKey'] = '这是⼀个测试的value值';
2.3 存储Json对象
sessionStorage也可存储Json对象:存储时,通过JSON.stringify()将对象转换为⽂本格式;读取时,通过JSON.parse()将⽂本转换回对象。
var userEntity ={
name:'tom',
age:22};//存储值:将对象转换为Json字符串
sessionStorage.setItem('user', JSON.stringify(userEntity));//取值时:把获取到的Json字符串转换回对象
var userJsonStr = Item('user');
userEntity=JSON.parse(userJsonStr);
console.log(userEntity.name);//=> tom
3,读取数据
3.1 通过getItem()⽅法取值
3.2 通过属性⽅式取值
sessionStorage['testKey']; //=> 这是⼀个测试的value值
5.Vuex
介绍:Vuex 是⼀个专为 Vue.js 应⽤程序开发的状态管理模式。
理解:核⼼就是 store(仓库),仓库是⽤来⼲什么的?你就当它⽤来储存东西的。
Vuex核⼼-store库
上图中虚线框的部分就是vuex,是公⽤的数据存储区域,可以理解为⼀个store库,这个库主要由以下三部分组成:
State:存放所有的公共数据,当组件使⽤公共数据时,直接去调⽤State就可以了。若 状态发⽣变化,相应 的组件也会得到⾼效更新。
Actions:存放组件需要调⽤的异步操作。若组件想要改变State中的数据,必须先通过Dispatch⽅法调⽤Actions(有时可以忽略调⽤Actions,直接调⽤Mutations),执⾏⼀些异步或同步操作
Mutations:组件若要改变数据,先去调⽤Actions,通过Actions再根据Commit⽅法去调⽤Mutations,此时Mutations中存放的是同步的修改State的⽅法
Vuex的⼯作原理
⾸先vue组件会通过this.store.state或者mapState()直接从State中获取数据。或者通过this.store.state或者mapState()直接从State中获取数据。或者通过s或者mapGetters()从getters中获取数据。getters是计算属性数据 ,可以读取State中的数据。
vue组件会通过$store.dispatch()或者mapActions触发actions。之后,actions通过commit触发mutations。⽽mutations会直接更新State中的数据
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论