• 【uni-app】小程序往缓存里添加对象并读取数据


     解释一下写这个小功能的逻辑:

    把input框里的东西收集一下,暂且放到缓存里,在地址列表里通过读取缓存中的地址列表来渲染生成一个个地址栏 。(从上边这个点击保存按钮后,跳转页面并生成地址栏盒子)

     上边为一堆input框,填完以后可以收集到里边的信息 data里定义的有{ }

    1. import {
    2. setStorage,
    3. getStorage,
    4. removeStorage
    5. } from '../../utils/localStorage.js'
    6. export default {
    7. data() {
    8. return {
    9. areaList: [],
    10. //选择的地址
    11. city: '',
    12. //输入的详细地址
    13. det_address: '',
    14. //输入的用户名
    15. userName: '',
    16. //输入的电话号码
    17. phoneNum: ''
    1. //这个按钮为填完input框里的信息,然后点击保存时的JS逻辑
    2. submit_address() {
    3. //判断一下如果任意一项为空 则弹出警告信息
    4. if (this.userName == '' ||
    5. this.phoneNum == '' ||
    6. this.det_address == '' || this.city == '') {
    7. //弹出提示信息 这里用的Vant组件里的警示框组件,
    8. // 不要复制这个,自己写个警示即可
    9. Dialog.alert({
    10. message: '填写信息未完善',
    11. }).then(() => {
    12. // on close
    13. });
    14. } else {
    15. //信息全部都有进行跳转 -(暂存到缓存中,后期有接口再改)
    16. //在这里读缓存信息
    17. let adrs = getStorage('adrs') || []
    18. const myadrs = [{
    19. userName: this.userName,
    20. phoneNum: this.phoneNum,
    21. det_address: this.det_address,
    22. city: this.city
    23. }]
    24. //把新增的东西合并到adrData中 然后
    25. let adrData = adrs.concat(myadrs)
    26. // 放入缓存中 adrs
    27. setStorage('adrs', adrData)
    28. uni.navigateTo({
    29. url: '/pagesA/myAddress/myAddress'
    30. });

    这里使用到一个JS的concat() 方法用于连接两个或多个数组。详情如下:

    JavaScript concat() 方法 | 菜鸟教程

    我画了一下基本逻辑,可以对照以上代码看一下:

    此时缓存中的列表:每条对象数据都会以列表的形式展示

     

     在地址列表使用的时候可以直接先读取缓存,然后通过遍历把数据展示出来:

    在onload的时候读到缓存:

    1. data() {
    2. return {
    3. myadrlist:[],
    4. }
    5. },
    6. onLoad(options) {
    7. //拿到的参数 ---
    8. // this.userName = options.userName,
    9. // this.phoneNum = options.phoneNum,
    10. // this.det_address = options.det_address,
    11. // this.city = options.city
    12. //从缓存中拿参数 (当前用的如下方式)
    13. let adrs = getStorage('adrs') || []
    14. console.log(adrs);
    15. this.myadrlist = adrs
    16. },

    渲染数据时通过插值语法即可:

    1. <view class="page_box" v-for="(item,index) in myadrlist" :key="index">
    2. <view class="box_top">
    3. <view class="left_img">
    4. <image src="../../static/image/myAddress_icon2.png" mode="aspectFit">image>
    5. view>
    6. <view class="right_img">
    7. <image src="../../static/image/myAddress_icon1.png" mode="aspectFit">image>
    8. view>
    9. <view class="box_top_top">
    10. <text>{{myadrlist[index].userName}}{{myadrlist[index].phoneNum}}text>
    11. view>
    12. <view class="box_top_bottom">
    13. <text>{{myadrlist[index].city}}{{myadrlist[index].det_address}}text>
    14. view>
    15. view>

    文件中都需要导入一个封装的公共类localStorage.js

    1. const setStorage = (key, value) => {
    2. wx.setStorageSync(key, value)
    3. }
    4. const getStorage = (key) => {
    5. return wx.getStorageSync(key)
    6. }
    7. const removeStorage = (key, callback) => {
    8. wx.removeStorage({
    9. key: key,
    10. success(res) {
    11. callback && callback()
    12. }
    13. })
    14. }
    15. export {
    16. setStorage,
    17. getStorage,
    18. removeStorage
    19. }

  • 相关阅读:
    能源照明运作机制与智能调控技术实现途径
    Python中处理HTTP异常和错误的策略
    JVM第一话 -- JVM入门详解以及运行时数据区分析
    4.6 - 堆 4.7 - 图
    【操作系统】测试一
    信息学奥赛一本通 1357:车厢调度(train)
    Kubernetes 文档 / 概念 / 服务、负载均衡和联网 / 网络策略
    【OpenGL】OpenGL Examples
    CUDA小白 - NPP(4) 图像处理 Data Exchange and Initialization(1)
    今日油价查询易语言代码
  • 原文地址:https://blog.csdn.net/ONLYSRY/article/details/126851935