uniapp-商城-66-shop(2-品牌信息显示,数据库读取的异步操作 放到vuex actions)

        完成页面的显示,但是还需要进行修改,这里涉及到修改中的信息同步显示。也会涉及到数据的读取,修改和同步。

        本文介绍了如何使用Vuex管理品牌数据,实现数据的同步显示和修改。主要内容包括:1.将获取品牌数据的异步操作封装到Vuex的actions中,减少重复代码;2.在组件中通过mapActions和mapMutations引入Vuex方法;3.在品牌信息修改或新增后,通过SET_BRAND方法立即更新状态,确保页面数据同步。这种方法避免了在每个页面重复请求数据,提高了代码复用性,同时实现了修改后的实时更新。

1、先看看原来的样子(屏蔽的代码)

        created() {
            this.getBrandData();  //通过mapActions 过来的接口  获取数据,代替下面的语句
            /*因为用了vuex的方式获取数据,就不用再重复写了 ,也避免下一个页面需要获取还要重新再写一次 在brand.js中*/
            /*
            brandCloudObj.get().then(res=>{
                this.SET_BRAND(res.data[0])
            })
            */
        },

2、将1的异步,抽离出来,封装到vuex 的 action中,便于引用

2.1 引入云对象

const brandCloudObj = uniCloud.importObject("green-mall-brand")
//导入云对象,和在页面逻辑中是一样的

2.2 定义一个异步操作

就是把我们的 云对象获取数据的操作,封装到vuex action。

const brandCloudObj = uniCloud.importObject("green-mall-brand")
//导入云对象,和在页面逻辑中是一样的//定义brand ,包含state状态 ,mutations同步操作,actions异步操作
// https://blog.csdn.net/weixin_43529465/article/details/129806460  分析
const brand = {state: {// brandData: {},brandData: {// name:null  //要屏蔽掉,不然页面 show-headbar 上也会判断name有这一个键(key) noBrandData: false //默认是有值 有品牌信息}},mutations: {// 作用:操作Vuex中的state属性数据。// mutations属性与getters 属性和 state属性平级,可以修改state中的数据。SET_BRAND(state, value) {state.brandData = value}},actions: {// 作用:修改state数据,异步修改。// 区别:actions是异步修改state中数据,mutations是同步修改state中数据。// 原理:actions中的方法并不能直接修操作state中的数据,需要触发mutations中的方法,最终还需要通过mutations中的方法修改数据//其实下面的请求,也可以放到页面上做数据请求,但是为了后期使用,总不可能每一个页面我们都做一个请求吧。这也就相当于一数据请求的封装,后期都用这一个就好//在shop-headbar 中,created,可以完成的请求放到了这里async getBrandData(context) { //context 是上下文标识,通过他 可以获取到state 以及 mutations 中的方法和变量let arr = Object.keys(context.state.brandData)  //Object.keys 获取对象的key成为一个数组if (arr.length) return;   //有数据,减少网络请求和浪费let res = await brandCloudObj.get();if (!res.data.length) { //判断 数据库中有没有品牌信息context.commit("SET_BRAND", { //通过 commit 执行,方法SET_BRANDnoBrandData: true // 判断是没有值,就返回空})return;};context.commit("SET_BRAND", res.data[0]) //数据库有值,就返回数据库获取到的信息}}
}
export default brand

3、改写shop中shop-headbar组件中的 获取数据操作

3.1 导入 vuex 中 maoaction 的方法,屏蔽云对象的导入

    import {
        mapState,
        mapGetters,
        mapMutations,
        mapActions
    } from "vuex" //通过这里 才能使用mapGetters 中的 brandData
    import brand from "../../store/modules/brand";
    //引入mapMutations 便于引入state中的方法 SET_BRAND

// const brandCloudObj = uniCloud.importObject("green-mall-brand")   因为用了vuex的方式获取数据,就不用导入了  在brand.js中

3.2 在组件/页面的方法中,导入vuex action中的方法action中的 getdata

        methods: {
            ...mapMutations(["SET_BRAND"]), //同步处理  从brandData放到数据库  修改来用
            ...mapActions(["getBrandData"]), //异步处理  从数据库读取赋值给brandData 显示来用  修改时,就是先在修改界面显示,然后修改,然后在显示
        }

3.3 在created中使用该方法

        // 相当于页面中的 onload  在组件中使用 created
        created() {
            this.getBrandData();  //通过mapActions 过来的接口  获取数据,代替下面的语句
            /*因为用了vuex的方式获取数据,就不用再重复写了 ,也避免下一个页面需要获取还要重新再写一次 在brand.js中*/
            /*
            brandCloudObj.get().then(res=>{
                this.SET_BRAND(res.data[0])
            })
            */
        },

4、在brand.vue中使用 vuex 数据

在这个页面中,处理添加和修改两个功能,

如果是添加,那么在添加以前,在我们shop头部页面(shop-headbar组件)显示的就没有数据,以前的代码添加后,是不会立即显示;

如果是修改,那么在修改以前,在我们shop头部页面(shop-headbar组件)显示的就时以前的数据,以前的代码修改后,是不会立即更新;

4.1 要使用vuex的方法,让修改和添加都能立即更新到我们的shop页面上

导入 vuex中的方法

    import {
        mapMutations
    } from "vuex"

4.2 在处理修改和更新的逻辑的方法上,添加一个处理,修改页面中 shop-headbar的状态显示数据

//新增或者修改品牌啊信息 异步同步化
            async addAndUpdate() {
                let title;
                if (this.brandFormData._id) {
                    let res = await brandCloudObj.update(this.brandFormData)
                    title = "修改成功"
                } else {
                    //新增
                    await brandCloudObj.add(this.brandFormData)
                    title = "新增成功"
                }
                uni.showToast({
                    title,
                    mask: true
                })

                setTimeout(() => {
                    uni.navigateBack();
                }, 1500)

                this.SET_BRAND(this.brandFormData);
            }

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

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

相关文章

使用Pyinstaller打包python,全过程解析【2025最详细】

一、如何使用 Pyinstaller 打包 Python 程序 1.打开终端 右键点击文件夹空白处,选择 打开于 > 打开终端 2.安装 pyinstaller 在打开的终端中,输入命令【pip install pyinstaller】 使用 Python 包管理工具 pip 来安装 Pyinstaller。等待安装过程结…

GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展

容器编排与GPU计算的结合,为追求性能优化的企业开辟了战略转型的新路径 基于GPU的托管Kubernetes集群不仅是技术选择,更是彻底改变企业处理高负载任务的战略部署方式。 随着人工智能和机器学习项目激增、实时数据处理需求的剧增,以及高性能媒…

LINUX 524 rsync+inotify 调试(问题1:指定端口无法同步/已通过;问题2:rsync.log文件中时间不显示/已显示)

怎么把java文件夹给传过去了 rsync inotify 监控代码实时传输调试 没看到日志 这里面有了 rsync -e"ssh -p 3712" -av /root/app/java/ code192.168.235.100:/home/code/backup/java_backup/ 文件夹后面的/要加上 [rootlocalhost java]# cat /var/log/rsync.log…

Python入门手册:条件判断

条件判断是编程中不可或缺的一部分,它允许程序根据不同的条件执行不同的代码块。Python提供了if、elif和else语句来实现条件判断。通过这些语句,你可以控制程序的流程,使其能够根据不同的情况做出相应的反应。本文将详细介绍Python中的条件判…

x-cmd install | cargo-selector:优雅管理 Rust 项目二进制与示例,开发体验升级

目录 功能亮点安装优势特点适用场景总结 还在为 Rust 项目中众多的二进制文件和示例而烦恼吗?cargo-selector 让你告别繁琐的命令行,轻松选择并运行目标程序! 功能亮点 交互式选择: 在终端中以交互方式浏览你的二进制文件和示例&…

Baklib知识中台高效实践路径

知识中台全周期构建路径 Baklib在构建知识中台全周期管理体系时,以知识价值转化为核心导向,通过三阶段递进实现闭环运作。在知识采集阶段,运用智能爬虫与API接口技术,聚合分散在业务系统、文档库及沟通工具中的碎片化知识资产&am…

mapbox进阶,手写放大镜功能

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀手写放大镜功能1. ☘️实现思路2. ☘️…

康佳Java开发面试题及参考答案

面向对象三大特性是什么?请举例说明多态。 面向对象编程(OOP)的三大核心特性是封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,并隐藏对象的内部实现细节;继承允许一个类继承另一个类的属性和方法&#x…

Spark集群架构解析:核心组件与Standalone、YARN模式深度对比(AM,Container,Driver,Executor)

一、核心组件定义与关系拆解 1. ApplicationMaster(AM) 定义:YARN 框架中的应用管理器,每个应用程序(如 Spark 作业)对应一个 AM。职责: 向 YARN 的 ResourceManager 申请资源(Con…

IS-IS报文

前言: IS-IS采用分层架构,所有Level-2和Level 1-2路由器构成了骨干区域,同一区域的Level-1路由器构成了普通区域IS-IS支持三种认证方式,分别是接口认证、区域认证、路由域认证IS-IS有四种报文类型,分别是IIH、CSNP、P…

【Flutter】多语言适配-波斯语RTL从右到左

前言 在多语言适配的时候,波斯语的显示是从右到左的,需要针对一些控件进行单独适配。 核心逻辑:根据语言动态设置 Directionality Widget build(BuildContext context) {final isRtl Localizations.localeOf(context).languageCode fa;r…

【VSCode】在远程服务器Linux 系统 实现 Anaconda 安装与下载

【远程服务器】Anaconda 安装与下载 一、 安装Anaconda【方式一】直接在远程服务器下载,通过 wget 命令:【方式二】在本地电脑下载,在同意 vscode上传到服务器二、配置环境变量 本文基于 VSCode 进行远程服务器的配置,VSCode 相关安装可参考下…

【深度学习-Day 17】神经网络的心脏:反向传播算法全解析

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

线性回归神经网络从0到1

1.线性方程和向量乘法 深度学习的基础就是从线性回归方程的理论进入的。简单的线性回归方程为 比如大家日常中买房子,价格受到哪些因素影响呢? 比如房龄、交通、是否是学区、有无配套超市、公园,这些基本是外部条件,内部条件诸如…

11|省下钱买显卡,如何利用开源模型节约成本?

不知道课程上到这里,你账户里免费的5美元的额度还剩下多少了?如果你尝试着完成我给的几个数据集里的思考题,相信这个额度应该是不太够用的。而ChatCompletion的接口,又需要传入大量的上下文信息,实际消耗的Token数量其…

文章代码|皮层/表皮特异性转录因子 bZIP89 的自然变异决定了玉米侧根发育和抗旱能力

数据和材料可用性:评估本文结论所需的所有数据都包含在论文和/或补充材料中。本研究中的大量 RNA-seq 读数存放在 NCBI 序列读取档案 (www.ncbi.nlm.nih.gov/sra) 中,登录代码为 SRP446501/PRJNA980895。scRNA-seq、DAP-seq 和 DN…

铠大师:让用户畅享多元应用,助力鸿蒙生态发展

在全球信息技术产业格局加速重构的背景下,中国科技力量正以开放包容的姿态重塑操作系统生态范式。 5月19日,华为在成都举办的nova14系列及鸿蒙电脑新品发布会上,正式对外发布搭载了鸿蒙系统的笔记本电脑HUAWEI MateBook Pro与HUAWEI MateBoo…

初学Transformer架构和注意力机制

文章目录 说明一 LLM 简介二 Transformer 架构2.1 Transformer的架构组成2.1.1 输入嵌入 (Input Embedding)2.1.2 编码器 (Encoder) 的结构解码器 (Decoder) 的结构2.1.3 输出层 (Output Layer)结构 2.2 编码和解码器的独立输入理解 三 注意力机制 说明 本文适合初学者&#x…

基于PySide6与pycatia的CATIA几何阵列生成器开发实践

引言:参数化设计的工业价值 在航空航天、汽车制造等领域,复杂几何图案的批量生成是模具设计与机械加工的核心需求。传统手动建模方式存在效率低下、参数调整困难等问题。本文基于PySide6+pycatia技术栈,实现了一套支持​​动态参数配置​​、​​智能几何阵列生成​​的自动…

PDF 编辑批量拆分合并OCR 识别

各位办公小能手们!你们有没有过被PDF文件折磨得死去活来的经历?反正我是有,每次要编辑PDF,那叫一个费劲啊!不过呢,今天我要给大家介绍一款神器——WPS PDF to Word,有了它,PDF编辑那…