01-day-vuex的使用

简介: 01-day-vuex的使用

知识点1===》简单的使用vuex  进行state取值

 

使用yarn下载  yarn add vuex -D

 

vuex的包叫做 store 跟pages同级


创建store文件夹,文件夹下有store.js

 

store.js文件如下


{
    // Vuex 仓库文件(入口)
    import Vue from 'vue'
    import Vuex from 'vuex'
    //全局注册
    Vue.use(Vuex)
    // 创建一个状态厂库  并且将它暴露出去 export default
    const store=new Vuex.Store({
        state: {
            test: "ceshi", 
        },
    })
    console.log(store.state.test)  //在控制台输出 ceshi  可能在编译器会报错
    export default store
}
  然后在main.js引入改文件store.js
  import store from "./store/store";
  最后注释掉  目的在控制台好单独观察
  render: h => h(App)
 即如下
 new Vue({
  router,
}).$mount("#app")


知识点2==》简单的使用vuex  对state进行修改值


使用mutations   store.commit("changeName"); 进行提交


{
    import Vue from 'vue'   import Vuex from 'vuex'    Vue.use(Vuex)
    // 创建一个状态厂库  并且将它暴露出去 export default
    const store=new Vuex.Store({
        state: {
            test: "ceshi",  
        },
        // 通过mutation去改变state中的值,它是改变state值(状态的)的唯一方式  mutation是同步的 
        mutations: {
            changeName(state) {
                state.test = "哈哈 我不是test" 
            }
        }
    })
    // 放肆一 通过 store.commit()的方式去提交mutation,
    store.commit("changeName");
    console.log(store.state.test) //在控制台输出 “哈哈 我不是test”  可能在编译器会报错
    export default store
}


知识点3==》简单的使用vuex  对state进行动态修改值 知识点2其他的不变


改变mutations 语句块  和 store.commit


 // 再传递一个参数,用来动态修改值 zhi
    mutations: {
        changeName(state,zhi) {
            state.test = zhi  
        }
    }
   // 放肆一 通过 store.commit()的方式去提交mutation,
   store.commit("changeName","动态修正值,我不是哈哈");
   console.log(store.state.test) //在控制台输出 “动态修正值,我不是哈哈”  可能在编译器会报错


知识点4==》 如果 store.commit()传递的参数不止2个 那怎么办  知识点2其他的不变


改变mutations 语句块  和 store.commit


第2个参数使用对象的形式
   mutations: {
        changeName(state,obj) {
            state.test = obj.x 
        }
    }
   //  第二个参数使用一个对象那个的形式代替
   store.commit("changeName",{v:"我是vvvvvvvvv", x:"我是xxxxxxxxx"});
   console.log(store.state.test) //在控制台输出 “我是xxxxxxxxx”  可能在编译器会报错


知识点5===》 提交mutations   store.commit()的另外一种方式


store.commit整个帝乡传递给第二个参数 obj


 mutations: {
        changeName(state,obj) {
            state.test = obj.val  
        }
    }
store.commit({
    type: "changeName",  //这里是mutation的名字
    val: 10,
    sex: "男",
    newName: "王五"
});    
console.log(store.state.test) //输出10 


知识点6==》  action的基本使用   store.dispatch去调用 action


 {
    // Vuex 仓库文件(入口)
    import Vue from 'vue'   import Vuex from 'vuex'   Vue.use(Vuex)
    // 创建一个状态厂库  并且将它暴露出去 export default
    const store=new Vuex.Store({
        state: {
            test: "ceshi",  
            datalist:[], //add
        },
        mutations: {
            changeName(state,obj) {
                state.test = obj.val  
            }
        },
        // 每一个action都会接收一个参数,这个参数可以提交mutation(  context.commit( ) )
        actions:{
            initDatalist(context,obj){
                console.log(context);  //输出为 {dispatch: ƒ, commit: ƒ, getters: {…}, state: {…}}
                console.log(obj);      // 我是哈哈
            } 
        }
    })
    store.commit({
        type: "changeName",  //这里是mutation的名字
        val: 10,
        sex: "男",
        newName: "王五"
    });
    // 调用action,使用store.dispatch就可以出发一个action 同样调用有两种形式 
    // 1 第二个参数数对象   2整个都是对象的形式
    store.dispatch({
        type:"initDatalist",
        val:"我是哈哈"
    })
    export default store
 }


千万不能  虽然在控制台可以看见state中有值


 但是我们不能直接通过这样的形式去修改   .state.属性=“值”


 之所以我们能够看见  是因为别人是为了我们可以看见  方便调试


知识点7==》


action 模块与 mutations模块中 函数不用担心会覆盖  不用担心函数会重名


导入api


import {getGoodsInfo} from "../apis/api"
{
    // Vuex 仓库文件(入口)  import Vue from 'vue'  import Vuex from 'vuex'   Vue.use(Vuex)
    import {getGoodsInfo} from "../apis/api"
    // 创建一个状态厂库  并且将它暴露出去 export default
    const store=new Vuex.Store({
        state: {
            test: "ceshi",  
            datalist:[],
        },
        mutations: {
            initDatalist(state, obj) {
                state.datalist = obj.list;//赋值哦
            }
        },
        //每一个action都会接收一个参数,这个参数可以提交mutation(  context.commit( ) )
        actions:{
        async initDatalist(context,obj){
            //  发送一步请求 拿到数据  
            let res= await  getGoodsInfo()
            console.log(res.data.data)
            context.commit({
                type: "initDatalist", //去调用mutations中的initDatalist
                list: res.data.data
            })
            } 
        }
    })
    // 调用action,使用store.dispatch就可以出发一个action 同样调用有两种形式 
    // 1 第二个参数数对象   2整个都是对象的形式
    store.dispatch({
        type:"initDatalist",
        val:"我是哈哈"
    })
    console.log(store.state.datalist) 
    //我我们发现这里并没有输出几个数组的值
    // 因为是axios 是一步需求  此时还没有它去取值时  请求还没有拿到值
    // action: 通知,可以进行任何异步操作,action不能直接改变state,只能提交一个mutation让它去改变状态
    // 如果有异步请求获取数据,应该先发送action,在action内处理完异步,并拿到数据以后,在commit一个mutation
    export default store
}


知识点8===》


getter: 计算属性(同computed),会进行结果缓存,只要母体数据不发生变化,则不会重新计算!


getter:的基本用法  跟另外几个属性同级


 getters:{
        getMale(){
            return "getters必须返回一个值"
        }
   }
   //取值,和computed一样,直接调用属性即可,不用加括号!!!!
   console.log(store.getters.getMale) //输出getters必须返回一个值


知识点9===》getters过滤值  过滤掉女生


{
        // Vuex 仓库文件(入口)
        import Vue from 'vue'     import Vuex from 'vuex'     Vue.use(Vuex)
        // 创建一个状态厂库  并且将它暴露出去 export default
        const store=new Vuex.Store({
            state: {
                test: "ceshi",  
                datalist:[],
                emplist: [
                    { name: "zs", sex: "男" },
                    { name: "zs1", sex: "男" },
                    { name: "zs2", sex: "女" },
                    { name: "zs3", sex: "女" },
                    { name: "zs4", sex: "男" }
                ] //add
            },
            mutations: {
                initDatalist(state, obj) {
                    state.datalist = obj.list;//赋值哦
                }
            },
            getters:{
                getMale(state){ //是上面各个state
                let arr=[];
                for(let obj of state.emplist){
                    if(obj.sex=="男"){
                        arr.push(obj);
                    }   
                } 
                return arr; // getters 必须返回一个值
                }
            }
        })
        //取值,和computed一样,直接调用属性即可,不用加括号!!!!
        console.log(store.getters.getMale) // 放回过滤后的值
        export default store
  }


知识点10==》


filter的使用  与vuex无关


如果retuen true  则把当前的值放入新数组


如果retuen false  则不会把 当前的值放入新数组


 let arr=[1,2,3,4,5,6,7,8];
         let newarr=arr.filter(val=>{
             if(val%2==0){
                 return true
             }else{
                 return false
             }
         })
         console.log(newarr) //输出【2,4,6,8】
相关文章
|
JSON 缓存 运维
Dataphin数据服务API开启IP白名单调用鉴权
Dataphin数据服务API提供便捷的API开发及运维、应用调用权限管理等功能,为数据业务化提供了坚实的支撑。在应用调用API的时候,Dataphin可支持通过AcessKey方式的调用鉴权。而在企业内部网络中,也可以使用IP白名单方式简化调用。本文将为您介绍如何开启IP白名单的调用鉴权。
438 0
|
API 数据安全/隐私保护
Argo CD接入LDAP认证或者gitea认证的方法
argocd默认是通过修改argocd-cm来添加账户的,添加完账户后,还需要使用argocd客户端命令去给账户设置密码,这肯定是比较麻烦的,为了方便使用,我们可以接入ldap认证或者gitea的oauth2认证。 这里我们主要写ldap认证,因为gitea没有提供组信息给dex,而ldap能返回组信息 ,gitea的接入会在文章的末尾进行简单介绍 关键词:argocd ldap dex
2291 1
Argo CD接入LDAP认证或者gitea认证的方法
|
7月前
|
存储 人工智能 运维
自我提升可以从哪些方面:AI时代的能力重构与终身进化
在数字技术与AI快速发展的背景下,自我提升从“阶段式学习”转变为“持续性进化”。文章从认知升级、技能进化、生态构建三个维度解析AI时代个人能力提升的核心路径。强调个体需从知识积累转向能力重构,通过批判性思维、跨域关联和动态适应性实现思维跃迁;同时构建复合能力体系,并借助AI工具与协作网络,在数字化转型中扮演价值创造者角色。最终,自我提升将超越传统框架,成为能力生态的动态演进过程。
|
10月前
|
存储 算法 数据挖掘
服务器数据恢复—nas中raid6阵列失效,存储无法访问的数据恢复案例
一台nas上共有14块硬盘组建了一组raid6磁盘阵列。 该nas在工作过程中,raid6阵列中硬盘出现故障离线,导致raid6阵列失效,nas无法正常访问。
|
12月前
|
网络协议 网络安全 API
Http和Socks的区别?
HTTP 和 SOCKS 协议各有其优势和应用场景。在选择使用哪种协议时,应根据具体需求和应用环境做出决定。HTTP 适用于 Web 服务相关的通信,而 SOCKS 则更适用于需要通用代理功能和复杂网络环境的场景。了解它们的区别和特点,有助于在不同的网络应用中做出最佳选择。
446 1
|
12月前
|
人工智能 搜索推荐
人工智能与娱乐产业:电影制作的新工具
【10月更文挑战第31天】随着科技的发展,人工智能(AI)已成为电影制作的新工具,从剧本创作、场景构建、动作捕捉到音频处理和剪辑,AI不仅提升了制作效率和质量,还为电影人提供了更多创作可能性。本文探讨了AI在电影制作中的具体应用及其带来的变革。
|
弹性计算 安全 关系型数据库
rds安全组规则
云数据库RDS的安全组规则是虚拟防火墙,用于控制网络访问权限,确保数据库安全。配置要点包括:指定RDS实例的安全组,设定入方向规则(如源IP、协议和端口),考虑默认规则的开放程度。根据场景,同组内外的ECS实例需不同配置。管理员应合理规划规则,确保业务需求与安全性平衡,并定期审计更新。
345 3
|
JavaScript API
一文搞懂Vue3中watch和watchEffect区别和用法!
前言 使用过 Vue 的小伙伴,不管时 Vue2 还是 Vue3,我相信你都用过 Vue 中的监听器。监听器的作用就和它的名字一样:用来监听某个东西是否发生变化!我们很多需求都会用到监听器 watch,但是 Vue2 和 Vue3 中的监听器的用法有些许不一样,这就让一些从 Vue2 转 Vue3 的小伙伴不太适应,所以,我们今天就来好好学一学 Vue3 中的监听器如何使用!
1971 0
一文搞懂Vue3中watch和watchEffect区别和用法!
|
JavaScript 搜索推荐 测试技术
深入了解 Vue CLI:现代化 Vue.js 项目开发工具
深入了解 Vue CLI:现代化 Vue.js 项目开发工具
246 0