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

微信小程序141~150

1.将token存储到Store
import { observable, action } from 'mobx-miniprogram'
import { getStorage } from '../miniprogram/utils/storage'// store对象
export const userStore = observable({
// 定义响应式数据
token: getStorage('token') || '',// action用来修改状态setToken: action(function (token) {this.token = token}),})
2.用户信息存储到Store

调用接口获取用户信息,获取数据以后要存储用户信息数据到本地,为了方便用户信息的获取和使用,将其存储到store

import { observable, action } from 'mobx-miniprogram'
import { getStorage } from '../utils/storage'// store对象
export const userStore = observable({// 定义响应式数据token: getStorage('token') || '',userInfo: getStorage('uesrInfo') || {},// action用来修改状态setToken: action(function (token) {this.token = token}),setUserInfo: action(function (userInfo) {this.userInfo = userInfo})
})
3.使用数据渲染用户信息

将用户信息数据从store取出,并渲染到页面上。

import { ComponentWithStore } from 'mobx-miniprogram-bindings'
import { userStore, userstore } from '../../stores/userstore'
// pages/info/info.js
ComponentWithStore({// 页面的初始数据data: {// 初始化第二个面板数据initpanel: [{url: '/pages/order/list/list',title: '商品订单',iconfont: 'icon-dingdan'},{url: '/pages/order/list/list',title: '礼品卡订单',iconfont: 'icon-lipinka'},{url: '/pages/order/list/list',title: '退款/售后',iconfont: 'icon-tuikuan'}]},storeBindings: {store: userStore,fields: ['token', 'userInfo']},// 跳转到登录页面toLoginPage() {wx.navigateTo({url: '/pages/login/login'})}
})
4.配置分包以及预下载

在app.json中

分包
"subPackages": [{"root": "modules/settingModule","name": "settingModule","pages": ["pages/address/add/index","pages/address/list/index","pages/profile/profile"]}]
预下载
"preloadRule": {"pages/settings/settings": {"network": "all","packages": ["settingModule"]}}
5.渲染用户信息
import { BehaviorWithStore } from 'mobx-miniprogram-bindings'
import { userStore } from '../../../../stores/userstore'
export const userBehavior = BehaviorWithStore({storeBindings: {store: 'userStore',fields: ['userInfo']}
})import { userBehavior } from './behavior'
Page({// 注册behaviorbehavior: [userBehavior]})
6.更新用户头像
1.获取头像临时路径

在这里插入图片描述

// 更新用户头像chooseAvatar(event) {// 获取临时路径有时效时间,需要将其上传到公司服务器,获取永久路径,在用永久路径更新headimageurl,用户保存const { avatarUrl } = event.detailthis.setData({'userInfo.headimageurl': avatarUrl})},
2.头像临时路径上传到服务器

在这里插入图片描述

第一种方式
wx.uploadFile({filePath: 'avatarUrl',name: 'file',url: 'https://gmall-prod.atguigu.cn/mall-api/fileUpload', // 开发者服务器地址header: {token: getStorage('token')},success: (res) => {const uploadRes = JSON.parse(res.data)this.setData({'userInfo.headimageurl': uploadRes.data})}})第二种方式await reqUploadFile(avatarUrl, 'file')this.setData({'userInfo.headimage': resizeBy.data})
3.完成头像更新

在这里插入图片描述

 // 更新用户信息async updateUserInfo() {const res = await reqUpdataUserInfo(this.data.userInfo)if (res.code === 200) {// 存储到本地setStorage('userInfo', this.data.userInfo)// 同步到storethis.setUserInfo(this.data.userInfo)// 给用户提示toast({ title: '用户信息更新成功' })}},
7.更新用户昵称

需要给input输入框type属性设置为nickname,键盘上方才会显示微信昵称
给input输入框添加name属性,form组件才会自动收集有name属性的表单元素的值
给按钮添加form-type属性,如果值是reset就是重置表单
给按钮添加form-type属性,如果值是submit就是提交按钮

 // 获取用户昵称getNickname(event) {// 结构最新的用户昵称const { nickname } = event.detail.valuethis.setData({'userInfo.nickname': nickname,isShowPopup: false})},// 显示修改昵称弹框onUpdateNickName() {this.setData({isShowPopup: true,'userInfo.nickname': this.data.userInfo.nickname})},
8.定义新参数以及封装接口API
import { http } from '../utils/http'
export const reqAddAddress = (data) => {return http.post('/userAddress/save, data')
}export const reqAddressList = () => {return http.get('/userAddress/findUserAddress')
}export const reqAddressInfo = (id) => {return http.get('/userAddress/{id}')
}export const reqUpdateAddress = (data) => {return http.post('/userAddress/update')
}export const reqDelAddress = (id) => {return http.get('/userAddress/delete/{id}')
}
9. 收集省市级数据

picker从底部弹起滚动选择器
mode的属性是region弹起的就是省市区选择器
value:要求是一个数组,选中的省市区

       <!-- 省市区 --><view class="row"><text class="title">所在地区</text><!-- picker从底部弹起滚动选择器 --><!-- mode的属性是region弹起的就是省市区选择器 --><!-- value:要求是一个数组,选中的省市区 --><picker mode="region" value="{{ [provinceName,cityName, districtName] }}" bindchange="onAddressChange"><view class="region" wx:if="provinceName">{{ provinceName + '' + cityName + '' + districtName }}</view><view class="placeholder" wx:else> 请选择收货人所在地区</view></picker>// 省市区选择onAddressChange(event) {const [provinceName, cityName, districtName] = event.detail.valueconst [provinceCode, cityCode, districtCode] = event.detail.codethis.setData({provinceCode,cityCode,districtCode,provinceName,cityName,districtName})}
})
10.收集新增地址及其他请求参数

第一种方式:
给input加name、value和按钮加submit属性才能做出一个能提交的表单。
第二种方式:
简易双向数据绑定

// wxml
model:value="{{ name }}// js// 保存收货地址saveAddrssForm(event) {// 组织参数(完整地址,是否设置为默认值)const { provinceName, cityName, districtName, address, isDefault } = this.data//最终要发送的请求参数const params = {...this.data,fullAddress: provinceName + cityName + districtName + address,isDefault: isDefault ? 1 : 0}},
http://www.xdnf.cn/news/1131121.html

相关文章:

  • rustdesk远控电脑替代todesk,平替向日葵等软件
  • 【云原生网络】Istio基础篇
  • 实时调度类
  • 鸿蒙网络编程系列58-仓颉版TLS数字证书查看及验签示例
  • JavaScript进阶篇——第五章 对象成员管理与数组遍历优化
  • uniapp+vue3+鸿蒙系统的开发
  • 查看.bin二进制文件的方式(HxD十六进制编辑器的安装)
  • 从缓存 CAS 看Kimi K2使用的MuonClip优化器
  • Mybatis07-缓存
  • 【LLM】OpenRouter调用Anthropic Claude上下文缓存处理
  • Jenkins Pipeline 中使用 JsonSlurper 报错:cannot find current thread
  • 55. 跳跃游戏
  • 2025年中国品牌全球化发展分析:中国品牌在社交渠道、电商平台及官网流量方面显著增长
  • 语音增强论文汇总
  • IIS网站间歇性打不开暴力解决方法
  • 【数据结构】栈与链表的区别
  • 【Qt开发】Qt的背景介绍(二)-> 搭建Qt开发环境
  • 如何在硬件中进行有效地调试
  • TCP 三次握手与四次挥手笔记
  • 前端vue3获取excel二进制流在页面展示
  • Promise与Axios:异步编程
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • React -自定义hooks - 封装双向数据绑定
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • C# StringBuilder源码分析
  • 2025年Java最新社招面试八股文+技术场景题(金九银十)
  • Hadoop架构演进:从1.0到2.0的深度对比与优化解析
  • Hadoop(二)
  • QT技巧之快速搭建串口收发平台