1==>mapGetters 取vuex中的值 data:2020.2.28
1==> 引入
import { mapMutations, mapGetters } from "vuex" // mapGetters 取值的辅助函数
2==> 注入在computed中注入
computed:{
//mapGetters来取值
...mapGetters(['sysname','datatest']);//数组的形式
},
3==>取值 this.sysname 就可以输出
2==> mapMutations修改Vue中的值 data:2020.2.28
1==> 引入mapMutations,这个辅助函数可以设置vuex中的值
import { mapMutations, mapGetters } from "vuex"
2==>放在methods中的最后一处;key:’value'的形式(value有引号,是你的映射设置),key是设置的方法
...mapMutations({
changesysname:'SYSNAME',
})
3==> 修改值
this.changesysname({
name:'数据改为123', //key是state中的,value是你要保存的值
})
问题
1==>如何快速的更改state中的值; 可以使用对象合并这个方法来解决哈 已经解决了ok
2==>说一说watch和computed的区别;并在什么情况下使用???
3==>刷新页面,vuex中的值,如何才能够不丢失????
3==> Object.assign(目标对象, 被合并的对象) data:2020.2.28
// Object.assign(目标对象, 被合并的对象)
// 如果被合并的对象于目标对象有相同的key,会出现覆盖;
// 最后输出的是目标对象
let form = {
name: '张三',
age: 19,
}
let obj = {
sex: '男',
age: 20, //会出现覆盖
}
Object.assign(form, obj);
console.log(form);
{name: "张三", age: 20, sex: "男"}
Object.assign(目标对象, 被合并的对象)
let form = {
name: '张三',
age: 19,
}
//vuex中,比如我只想修改age为34
Object.assign(form, {
age: 34
});
console.log(form);
4==>快速修改vuex对象中的某一个key值 data: 2021.3.1
state: {
obj:{
name:"张三",
age:23,
sex:'男'
}
},
// 同步 第一个形参 代表state
// name形参代表的是 你此时传递过来的参数
mutations: {
getobj:(state, data)=>{
state.obj = data; //赋值
}
},
hander(){
//快速修改vuex对象中的某一个key值
this.$store.commit("getobj",
Object.assign(
this.$store.state.obj,//取出原来的值,是一个对象
{age:this.$store.state.obj.age + 1} //将要被修改的值
)
);
console.log( this.$store.state.obj );
},
5==>字符串比较大小时,是不会进行隐式转换的(ok)
let aa = '2021108';
let bb = '202145';
if (aa < bb) {
console.log('bb大')
} else {
//走了这里
console.log('aa大')
}
字符串在进行比较的时候;
是不会进行隐私转换的;
运算符 - * / % 这写是个会进行隐私转换
ps加号 + 是不会进行隐式转换的
let aa = '2021108';
let bb = '202145';
console.log(aa + bb);
console.log(aa - bb); 会
console.log(aa * bb); 会
console.log(aa / bb); 会
console.log(aa % bb); 会
6==>
A==>B这样两个页面哈;
如果B页面进行一系列的逻辑操作后;
要进入到A页面;这个时候你需要注意一下;
此时不要使用this.$router.psuh
应该使用this.$router.go(-1);
这样才是正确的哈
7==>
A-->B--C这三个页面;
如果B页面依靠了localstoage;C页面进行完逻辑操作后;清除了localstoage;
这样是有问题的;
如果用户操作完后,点击返回键;返回到B页面。此时的B页面localstoage的值已经为空了;
肯定是会报错的哈;
解决办法是不要去清除这个值
8==> 字符串的截取 stringObject.substr(start,length)
//截取的是开始与字符串长度
stringObject.substr(start,length)
let str='hellonihao';
//一定要保证str是一个字符串;如果是数字会报错的哈;
//转化为字符串可以使用 toString 和 + ''通过加号连接
str1 = str.substr(0, str.length-1);//删除字符串最后一位;
删除第一位
var str = 'abc,def,hgi';
str = str.substr(1); //删除第一个字符
console.log(str);//bc,def,hgi