vue3仿美团项目问题(3)--地址管理

一、问题一

描述:修改地址数据,将其设置为默认地址,它就成为了默认地址,但是之前的默认地址还会存在,原理上应该把之前设置的默认地址给去掉;

解决办法:

vuex中CHANGEADDRESS(编辑地址)的逻辑为

 CHANGEADDRESS(state, value) {
            state.userAddress = state.userAddress.map(item => {
                return item.id === value.id ? value : item
            })
        },

 在vuex中的CHANGEADDRESS中进行一下判断,如果编辑的是默认地址,需要循环遍历将所有的设置为false;

     if (value.isDefault) {

                    item.isDefault = false

                }

 但是随之带来了第二个问题

二、问题二

描述:修改默认地址的时候,会自动的将默认地址按钮给去掉;

解决办法:

在 if  条件判断里面判断一下,当前 数据的id 和 遍历的 id 是否相同,若不相同,则将遍历的 idDefault(默认是否勾选的按钮的属性值) 设置为 false

 CHANGEADDRESS(state, value) {
            state.userAddress = state.userAddress.map(item => {
                // 如果编辑的是默认地址,需要循环遍历将所有的设置为false
               
                if (value.isDefault && item.id != value.id) {
                    item.isDefault = false
                }
                return item.id === value.id ? value : item
            })
        },

三、问题三

描述:添加地址之后,能保存成功,但是将新添加的数据进行编辑的时候,获取不到对应的数据;

解决办法:

给新添加的地址数据加上对应的   id 属性

if (store.state.userAddress.length) {
          content.id =
            Number(
              store.state.userAddress[store.state.userAddress.length - 1].id
            ) + 1;
        } else {
          content.id = 1001;
        }

四、问题四

描述:对默认地址进行编辑,设置为 不是默认地址,保存之后,地址列表就没有默认的地址数据了;

即使是新添加的 地址数据,不设置为默认地址,也没有默认地址;

正常的话,应该有一个默认的地址。

解决办法:

若修改的是默认地址,将其修改为 不是默认的;

就将修改后的地址数据过滤一遍,将 isDeafault 属性值为 false 的数据给过滤出来;

判断如果数组长度不为0,则将第一条数据设置为默认地址;

完整代码:

    CHANGEADDRESS(state, value) {
            state.userAddress = state.userAddress.map(item => {
                // 如果编辑的是默认地址,需要循环遍历将所有的设置为false
                
                if (value.isDefault && item.id != value.id) {
                    item.isDefault = false
                }

                return item.id === value.id ? value : item
            })
            state.userAddress = state.userAddress.filter(item => {

                return value.isDefault == false && item.isDefault == false
            })
            if (state.userAddress.length) {
                state.userAddress[0].isDefault = true
            }           
        },

五、问题五

vue-router.mjs:2629 Uncaught (in promise) TypeError: api.now is not a function

解决办法:

更新一下 vue-devtools就可以了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么前端都要学习Vue】 这几年Vue.js成为前端框架中最火的一个。越来越多的网站前端开始采用Vue.js开发。是开源世界华人的骄傲,作者是我国的尤雨溪大神。相对于其他前端框架,Vue 更容易上手!正因为它简单易学,很多前端开发工程师可以很快掌握并且应用到实际开发中。如果说你想用最短的时间来学习一个框架,快速上手项目Vue是不二之选。 【学员收益】 1)大部分学员想要学习Vue,但是无奈缺少一个好老师,董老师将手把手带领你学习,让你彻底掌握Vue框架。 2)课程将会长期维护,内容更超值,本课程基于最新的版本进行讲解,并且老师会更新升级到3.0稳定版本。 3)学完该课程后不仅能学到Vue的设计和开发技能,还能培养市场思维、用户思维、设计思维,并能够利用掌握的技术开发Vue项目,获取额外的收益。 【课程收获】 1、从基础知识到项目实战,内容涵盖Vue各个层面的知识和技巧2、学习曲线平缓,前端新人也可以看得懂3、贴近企业项目,按照企业级代码标准和工程开发的流程进行讲解4、让你能够独立开发高颜值的项目 5、项目涉及14大功能组件,从基础组件到业务组件,一站式全掌握 【项目效果】 本课程打造的是高颜值的美团外卖项目。不仅界面美观,而且涉及到了众多页面。多说无益,请大家扫码查看课程效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值