老师 想问下这个编辑地址我想要默认点进来的地址信息 要怎么处理

老师 想问下这个编辑地址我想要默认点进来的地址信息 要怎么处理

https://img1.sycdn.imooc.com//climg/6250447d0945b93004460687.jpghttps://img1.sycdn.imooc.com//climg/625044c409bd70d004390675.jpg

<template>

  <div class="wrapper">

    <div class="top">

      <span class="iconfont top__icon"

            @click="handleBackClick">&#xe8ef;</span>

      <span class="top__title">编辑收货地址</span>

      <span class="top__save"

            @click="saveAddress">保存</span>

    </div>

    <form class="address">

      <div class="address__same address__city">所在城市:<input type="text"

               class="input"

               placeholder="如厦门市"

               v-model="city"></div>

      <div class="address__same address__detail">详细地址:<input type="text"

               class="input"

               placeholder="如集美大学诚毅学院小高一"

               v-model="detailAddress"></div>

      <div class="address__same address__name">收货人:<input type="text"

               class="input"

               placeholder="请填写收货人的姓名"

               v-model="name"></div>

      <div class="address__same address__phone">联系电话:<input type="text"

               class="input"

               placeholder="请填写收货手机号"

               v-model="phone"></div>

    </form>

    <Toast v-if="showToast"

           :message="toastMessage" />

  </div>

</template>


<script>

import { useRouter } from 'vue-router'

import { reactive, toRefs } from 'vue'

import { post } from '../../utils/request'

import Toast, { useToastEffect } from '../../components/Toast.vue'


// 处理编辑地址相关逻辑

const useNewAddressEffect = (changeToast) => {

  const router = useRouter()

  const data = reactive({

    city: '',

    detailAddress: '',

    name: '',

    phone: ''

  })

  const saveAddress = async () => {

    try {

      const { city, detailAddress, name, phone } = data

      if (city === '' || detailAddress === '' || name === '' || phone === '') {

        changeToast('地址、收货人、电话不能为空')

        return false

      } else {

        const reg = /^1[3|4|5|7|8|9][0-9]\d{8}$/

        if (reg.test(phone)) {

          changeToast()

        } else {

          return changeToast('请输入正确的手机号')

        }

      }

      const result = await post('/api/user/updateAddress', {

        city: data.city,

        detail_address: data.detailAddress,

        name: data.name,

        phone: data.phone

      })

      if (result?.code === 1) {

        changeToast('地址更新成功成功')

        setTimeout(() => {

          router.push({ name: 'Address' })

        }, 2000)

      }

    } catch (e) {

      changeToast('请求失败')

    }

  }


  const { city, detailAddress, name, phone } = toRefs(data)

  return { city, detailAddress, name, phone, saveAddress }

}


// 点击回退逻辑

const useBackRouterEffect = () => {

  const router = useRouter()

  const handleBackClick = () => {

    router.back()

  }

  return handleBackClick

}


export default {

  name: 'UpdateAddress',

  components: { Toast },

  setup () {

    const handleBackClick = useBackRouterEffect()

    const { showToast, toastMessage, changeToast } = useToastEffect()

    const { city, detailAddress, name, phone, saveAddress } = useNewAddressEffect(changeToast)

    return { handleBackClick, showToast, toastMessage, city, detailAddress, name, phone, saveAddress }

  }

}

</script>


<style lang="scss" scoped>

@import "../../style/viriables.scss";

.wrapper {

  overflow-y: auto;

  position: absolute;

  top: 0;

  bottom: 0;

  left: 0;

  right: 0;

  background: #f8f8f8;

}

.top {

  position: relative;

  height: 0.44rem;

  line-height: 0.44rem;

  background: $bgColor;

  margin-bottom: 0.12rem;

  &__icon {

    font-size: 0.22rem;

    position: absolute;

    left: 0.18rem;

  }

  &__title {

    font-size: 0.16rem;

    color: $content-fontcolor;

    position: absolute;

    left: 50%;

    margin-left: -0.48rem;

  }

  &__save {

    font-size: 0.14rem;

    position: absolute;

    right: 0.18rem;

  }

}

.address {

  box-sizing: border-box;

  background: $bgColor;

  padding: 0 0.18rem;

  &__same {

    height: 0.44rem;

    line-height: 0.44rem;

    border-bottom: 0.01rem solid $content-bgColor;

    font-size: 0.14rem;

    color: $medium-fontColor;

    display: flex;

  }

  .input {

    flex: 1;

    border-style: none;

    outline: medium;

  }

}

</style>



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2022-04-09 10:23:51

同学你好,以下思路仅供参考:

方法一 首先下图中的信息,同学如果说是从接口中获取的渲染的话,我们可以把数据存放在vuex中。(推荐)

https://img1.sycdn.imooc.com//climg/6250ecbe09d1c09904780297.jpg

然后在点击跳转页面的时候,直接判断vuex中是否有值,有的话直接渲染即可。

https://img1.sycdn.imooc.com//climg/6250ed8a0918a14905540318.jpg

方法二 与上面的思路一样,如果说是动态获取的数据,在更改页面,直接走一遍接口,然后渲染就可以了。

https://img1.sycdn.imooc.com//climg/6250ee2e0983711504810239.jpg

祝学习愉快!

  • 提问者 lcy_18 #1

    要如何存储和渲染呢?可以具体说一下吗


    2022-04-10 16:00:54
  • 提问者 lcy_18 #2

    存放在vuex是什么意思

    https://img1.sycdn.imooc.com//climg/62528ed909b8e08002950075.jpg

    2022-04-10 16:01:50
  • 好帮手慕慕子 回复 提问者 lcy_18 #3

    同学你好,在你的另外相同提问下已经做出了解答,可以去查看下,祝学习愉快~

    2022-04-10 18:55:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师