uniapp-商城-26-vuex 使用流程

为了能在所有的页面都实现状态管理,我们按照前面讲的页面进行状态获取,然后再进行页面设置和布局,那就是重复工作,vuex 就会解决这样的问题,如同类、高度提炼的接口来帮助我们实现这些重复工作的管理。避免一直在造一样的轮子。

https://vuex.vuejs.org/zh/#%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E6%A8%A1%E5%BC%8F%E2%80%9D%EF%BC%9F

上面是vuex的官网。

其实以后用vuex 比较少  但是vue2 上还是用的多,以后vue3或者4 都是用的Pinia

这样的方案到处都是。

vuex 一般项目中用的就是module  其他的模块都是很少单独使用的。

uniapp中是内置了vue下的。不需要再一次安装,只需要构建一下就好了。

vue2中如果没有安装,可以手动装,

安装 | Vuex

这里要用的有  页面动物模块状态,购物车的状态都要用到这样的状态数据。像购物车不可能需要用到购物车的数据的地方都去读取数据库,那样会很麻烦,加大数据库的访问量。而且也慢。

1、建立一个文件夹在项目中  store

2、建立一个文件 index.js   在store--->index.js

3、在index.js  导入vuex,   import Vue from "vue"

具体如下:

//1、按照模块进行开发   不需要每一页面都定义  所以前面开发的shop-headebar.vue  是一个小小的demo  这里还是要用到vuex的概念
//1.1 你改了vuex 中的值 就改变了所有的值  想想都觉得舒坦  如:购物车中数量变化 ,订单,支付账单, 购物页面都一起变化; 页面状态值的使用也可以用vuex 用到整体 避免每一页都改变
// 2、项目建立store文件夹
// 3、创建 index。js 在 store文件夹
// 4、index中 按照如下方式写
import Vue from "vue"
import Vuex from "vuex"

Vue.use(Vuex)   //再vue安装vuex

// 5、index中 实例化 vuex
//基本上包含这5个对象
const store = new Vuex.Store({
    state:{
        //定义变量  一般这些后面就直接放大modules的js文件中定义,index进行导入就好
        vuexValue1:22,  //这里的值,相当于data,每一个页面都可以用
        vuexValue2:232,  //这里的值,相当于data,每一个页面都可以用
        vuexName:"开开心心",  //这里的值,相当于data,每一个页面都可以用
    },
    
    getters:{
        
    },
    mutations:{
        //定义动作 state 是上面定义的变量   num 是传进来的值
        setVuexValue(state,num){
            state.vuexValue1 =num
        }
    },
    actions:{
        
    },
    modules:{
        
    }
})

export default store 
// 6、 index中 要 把它导出去,方便引入的页面可以用上面的定义的值和方法


//7、当然这里还需要将其导入到main.jS中  ,全局导出使用,main.JS如下方式:
/*
import store from '@/store'
//这样就可以对该store进行全局挂载 使用
Vue.prototype.$store=store
*/

// 8、然后再需要用的页面 导入 按照如下方式  import
// 9、在进行计算  把需要的值计算过来
/*
<template>
    <view>
        个人中心
        {{vuexValue1}} {{vuexName}}  
        <button @click="clkbtn">修改</button>

//这里的变化,就会改变其他使用这个vuexValue1 的值,使用vuex 就是这样的一个好处,一个大脑,多处使用。
    </view>
</template>

<script>
    import {mapState,mapMutations} from "vuex"
    export default {
        data() {
            return {
                
            };
        },
        computed:{
            ...mapState(["vuexValue1","vuexName"])
        },
        methods:{
            ...mapMutations(["setVuexValue"]),
            clkbtn(){

                //this.vuexValue1=55   不能这样

                //这里的修改不能用 直接修改需要调用vuex中的方法:如下
                this.setVuexValue(55)    //默认就把state导过来了 相当于类  不用写变量
            }
        }
    }
</script>

<style lang="scss">

</style>

    */
   
   // 10.如果其他组件需要用,也要按照 8、9的方法来导入
   
   // 11 如果后面要改变这里的state 需要使用mutations   ,然后在要用的页面的方法中导入
   /*
   methods:{
       ...mapMutations(["setVuexValue"]),
       clkbtn(){
           this.setVuexValue(55)
       }
    */
  

//1、按照模块进行开发   不需要每一页面都定义  所以前面开发的shop-headebar.vue  是一个小小的demo  这里还是要用到vuex的概念
//1.1 你改了vuex 中的值 就改变了所有的值  想想都觉得舒坦  如:购物车中数量变化 ,订单,支付账单, 购物页面都一起变化; 页面状态值的使用也可以用vuex 用到整体 避免每一页都改变
// 2、项目建立store文件夹
// 3、创建 index。js 在 store文件夹
// 4、按照如下方式写
import Vue from "vue"
import Vuex from "vuex"Vue.use(Vuex)   //再vue安装vuex// 5、实例化 vuex
//基本上包含这5个对象 
const store = new Vuex.Store({state:{//定义变量  一般这些后面就直接放大modules的js文件中定义,index进行导入就好vuexValue1:22,  //这里的值,相当于data,每一个页面都可以用vuexValue2:232,  //这里的值,相当于data,每一个页面都可以用vuexName:"开开心心",  //这里的值,相当于data,每一个页面都可以用},getters:{},mutations:{//定义动作 state 是上面定义的变量   num 是传进来的值setVuexValue(state,num){state.vuexValue1 =num}},actions:{},modules:{}
})export default store  
// 6、 把它到出去,方便引入的页面可以用上面的定义的值和方法
//7、当然这里还需要将其导入到main.jS中  如下方式:
/*
import store from '@/store'
//这样就可以对该store进行全局挂载 使用
Vue.prototype.$store=store
*/// 8、然后再需要用的页面 导入 按照如下方式  import 
// 9、在进行计算  把需要的值计算过来
/*
<template><view>个人中心{{vuexValue1}} {{vuexName}}  <button @click="clkbtn">修改</button></view>
</template><script>import {mapState,mapMutations} from "vuex"export default {data() {return {};},computed:{...mapState(["vuexValue1","vuexName"])},methods:{...mapMutations(["setVuexValue"]),clkbtn(){this.setVuexValue(55)}}}
</script><style lang="scss"></style>*/// 10.组件需要用,也要按照 8、9的方法来导入// 11 如果后面要改变这里的state 需要使用mutations   ,然后在要用的页面的方法中导入/*methods:{...mapMutations(["setVuexValue"]),clkbtn(){this.setVuexValue(55)}*/

注:------------------------------------

如果我们再两个地方用一个值,那么这里就可以实现一个地方变化,其他地方跟到变化。

很好的例子就是购物车,在多个地方都需要变化

另外:

安装 | Vuex

1、state 模块 就是一个 数据模块  相当于 vue中script的   data 

2、getter 就是一个实现计算属性  相当于vue中script的  computed   如:求和等

3、mutation 就是方法,相当于vue中script的  方法:methods,它可以修改data中的值,这里就是修改state中的值;

4、action 是一个异步的方法

5、module 是最终的使用方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git 命令速查手册

听说用美图可以钓读者&#xff1f; 一、基础操作核心命令 1. 仓库初始化与克隆 命令作用示例git init创建新仓库git init my-projectgit clone克隆远程仓库git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add关联远程仓库git re…

信息量、香农熵、交叉熵、KL散度总结

信息量 对于一个事件而言&#xff0c;它一般具有三个特征&#xff1a; 小概率事件往往具有较大的信息量 大概率事件往往具有较小的信息量 独立事件的信息量相互可以相加 比如我们在买彩票这个事件中&#xff0c;彩票未中奖的概率往往很高&#xff0c;对我们而言一点也不稀…

使用C语言的cJSON中给JSON字符串添加转义

在 cJSON 库中&#xff0c;没有直接提供 一个函数来专门给 JSON 字符串添加转义&#xff08;如将 " 转义为 \"&#xff0c;\n 转义为 \\n 等&#xff09;。 但 cJSON 在 序列化&#xff08;cJSON_Print 或 cJSON_PrintUnformatted&#xff09; 时会自动处理转义字符…

宇树机器狗go2—slam建图(1)点云格式

0.前言 上一篇番外文章教大家如何在宇树机器狗go2的gazebo仿真环境中实现简单的导航运动&#xff0c;本期文章会教大家如何让宇树的机器狗go2在仿真环境中进行slam建图时经常会遇到的一些点云格式&#xff0c;在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道…

linux socket编程之udp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将prot与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.直接通信(服务器端) 3.1接收客户端发送的消息 3.2给客户端发送消息 四.客户端通信 4.1创建socket套接字 4.2客户端bind问题 4.3直接通信即可…

第1期:Python基础语法入门

1.1 Python简介 Python是一种解释型、面向对象、动态数据类型的高级编程语言。它设计简洁&#xff0c;易于学习&#xff0c;适合初学者。Python广泛应用于数据科学、人工智能、Web开发、自动化脚本等领域。它的语法简洁易懂&#xff0c;强调代码的可读性。 1.2 安装Python与配…

使用EXCEL绘制平滑曲线

播主播主&#xff0c;你都多少天没更新了&#xff01;&#xff01;&#xff01;泥在干什么&#xff1f;你还做这个账号麻&#xff1f;&#xff01;&#xff01;&#xff01; 做的做的&#xff08;哭唧唧&#xff09;&#xff0c;就是最近有些忙&#xff0c;以及…… 前言&…

当算力遇上马拉松:一场科技与肉身的极限碰撞

目录 一、从"肉身苦修"到"科技修仙" 二、马拉松的"新大陆战争" 三、肉身会被算法"优化"吗? 马拉松的下一站是"人机共生"时代 当AI能预测你的马拉松成绩,算法能规划最佳补给方案,智能装备让训练效率翻倍——你还会用传…

MLLMs for TSAD ?

项目链接:Multimodal LLMs Advance Time Series Analysis 代码链接:https://github.com/mllm-ts/VisualTimeAnomaly 出处:ICLR 2025 一 文章动机 多模态 LLM (MLLM) 通过 “视觉” 方式处理时序的潜力仍未充分探索; 人类检测 “时序异常” 的自然方式:可视化、文本描…

开发基于python的商品推荐系统,前端框架和后端框架的选择比较

开发一个基于Python的商品推荐系统时&#xff0c;前端和后端框架的选择需要综合考虑项目需求、开发效率、团队熟悉度以及系统的可扩展性等因素。 以下是一些推荐的框架和建议&#xff1a; 后端框架 Flask 优点&#xff1a; 轻量级&#xff1a;Flask的核心非常简洁&#xff0c;…

chili3d调试笔记2+添加web ui按钮

onclick 查找 打个断点看看 挺可疑的&#xff0c;打个断点看看 挺可疑的&#xff0c;打个断点看看 打到事件监听上了 加ui了 加入成功 新建弹窗-------------------------------------- 可以模仿这个文件&#xff0c;写弹窗 然后在这里注册一下&#xff0c;外部就能调用了 对了…

【重学Android】1.关于@Composer注解的一点知识笔记

最新因为一些原因&#xff0c;开始重新学习Android及kotlin编程&#xff0c;也觉得可以顺带记录下这个过程中的一些知识点&#xff0c;也可以用作日后自己查找复习。 Composable 注解在 Android 开发中的使用 Composable 是 Jetpack Compose&#xff08;Android 的现代声明式…

qt+mingw64+cmake+libqrencode项目编译和搭建成功记录

最近要使用高拍仪拍照获取照片&#xff0c;然后识别照片中的二维码数据、使用QZxing只能识别出一个条码、另外一个条码准备测试用其他的开源项目&#xff08;如libqrencode-4.1.1&#xff09;来进行测试&#xff0c;故进行本文的项目环境搭建测试&#xff0c;最后成功。 本机开…

【今日三题】判断是不是平衡二叉树(递归) / 最大子矩阵(二维前缀和) / 小葱的01串(滑动窗口)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;每日两三题 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 判断是不是平衡二叉树(递归)最大子矩阵(二维前缀和)小葱的01串(滑动窗口) 判断是不是平衡二叉树(递归) 判断是不是平衡二叉…

【Linux】线程ID、线程管理、与线程互斥

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f310; C 语言 上篇文章&#xff1a; 【Linux】线程&#xff1a;从原理到实战&#xff0c;全面掌握多线程编程&#xff01;-CSDN博客 下…

定制一款国密浏览器(10):移植SM2算法前,解决错误码的定义问题

上一章中,我给大家介绍了 SM4 在 BoringSSL 上的移植要点,本来计划本章介绍 SM2 算法的移植要点。在移植 SM2 过程中,遇到了一个拦路虎,所以先扫除这个拦路虎,这就是错误码的定义问题。 在铜锁中,引入了几个错误码和错误字符串,在文件 sm2_err.c 中: static const ER…

JDOM处理XML:Java程序员的“乐高积木2.0版“

各位代码建筑师们&#xff01;今天我们要玩一款比原生DOM更"Java友好"的XML积木套装——JDOM&#xff01;它像乐高得宝系列&#xff08;Duplo&#xff09;一样简单易用&#xff0c;却能让你的XML工程稳如霍格沃茨城堡&#xff01;&#xff08;温馨提示&#xff1a;别…

【后端开发】Spring日志

文章目录 Spring日志日志作用日志测试日志信息日志级别日志配置配置日志级别日志持久化日志文件分割 注解的使用 Spring日志 日志作用 系统监控&#xff1a;可以通过日志记录这个系统的运行状态&#xff0c;对数据进行分析&#xff0c;设置不同的规则&#xff0c;超过阈值时进…

探索大语言模型(LLM):Transformer 与 BERT从原理到实践

Transformer 与 BERT&#xff1a;从原理到实践 前言一、背景介绍二、核心公式推导1. 注意力机制&#xff08;Attention Mechanism&#xff09;2. 多头注意力机制&#xff08;Multi-Head Attention&#xff09;3. Transformer 编码器&#xff08;Transformer Encoder&#xff09…

计算机网络八股——HTTP协议与HTTPS协议

目录 HTTP1.1简述与特性 1. 报文清晰易读 2. 灵活和易于扩展 3. ⽆状态 Cookie和Session 4. 明⽂传输、不安全 HTTP协议发展过程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS协议 HTTP协议和HTTPS协议的区别 HTTPS中的加密方式 HTTPS中建立连接的方式 前言&#xff…