当前位置: 首页 > wzjs >正文

唐山网站建设最好的桌面百度

唐山网站建设最好的,桌面百度,建筑网官网登录,php网站后台开发完成页面的显示,但是还需要进行修改,这里涉及到修改中的信息同步显示。也会涉及到数据的读取,修改和同步。 本文介绍了如何使用Vuex管理品牌数据,实现数据的同步显示和修改。主要内容包括:1.将获取品牌数据的异步操作封…

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

        本文介绍了如何使用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.dtcms.com/wzjs/45375.html

相关文章:

  • 重庆做网站开发的集中杭州seo薪资水平
  • 专业设计网站排行榜新产品如何快速推广市场
  • 找百度公司做网站怎么样站长工具网站
  • 万能网站浏览器seo是指搜索引擎营销
  • 秦皇岛做网站多少钱网站推广费用
  • 个人网站 免备案seo的全称是什么
  • 农村室内设计效果图何鹏seo
  • 检测网站为什么打不开了智慧软文网
  • office里做网站的工具搜索seo优化
  • 专业工厂网站建设个人网站设计欣赏
  • b2b电子商务网站主要是以零售为主关键词seo优化排名
  • 做网站怎么赚钱 知乎高粱seo博客
  • 网站美工要求网站seo重庆
  • 中卫网站设计在哪里网页版登录入口
  • 网站建设表单基本操作个人开发app可以上架吗
  • java 网站开发实例餐饮品牌全案策划
  • 做网站要先申请域名吗2022年最新十条新闻
  • 网站维护主要需要会什么北京有限公司
  • 怎么用网站做word文件西安做网站的网络公司
  • thinkphp手机网站制作完美动力培训价格表
  • 陇西哪里能学做网站企业邮箱
  • 社会保险网站建设方案磁力狗
  • 视频广告公司网络优化方案
  • 凡科建站步骤免费个人网站制作
  • 网站贸易表格怎么做seo网站推广企业
  • 网站开发开发小游戏吗以下属于网站seo的内容是
  • 二学一做专题网站百度网址大全免费下载
  • 织梦电影网站模板下载西安网站设计
  • 文山北京网站建设超链接友情外链查询
  • 如何在淘宝上接单网站建设外包公司是正规公司吗