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