当前位置: 首页 > 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.dtcms.com/a/281990.html

相关文章:

  • 控制Vue对话框显示隐藏
  • 实例操作:基于 PipeLine 实现 JAVA项目集成 SonarQube代码检测通知 Jenkins
  • 【Linux】基本指令详解(二) 输入\输出重定向、一切皆文件、认识管道、man、cp、mv、echo、cat
  • 如何配置一个简单的docker容器应用?
  • 【2025/07/16】GitHub 今日热门项目
  • 基于 Spring Boot 构建的文件摆渡系统(File Ferry System)
  • Python19 —— 一维数据的处理
  • 小白成长之路-Elasticsearch 7.0 配置
  • Coze工作流无法更新问题处理
  • 如何通过扫描电镜检测汽车清洁度中的硬质颗粒并获取成分信息
  • 【源力觉醒 创作者计划】百度携文心 4.5 入局,开源大模型市场再添一员猛将,与 Qwen3 对比如何?
  • C++修炼:IO流
  • WPF 多窗口分文件实现方案
  • openEuler 22.03 LTS Rootless Docker 安装指南
  • 【MySQL基础】MySQL事务详解:原理、特性与实战应用
  • 每日算法刷题Day49:7.16:leetcode 差分5道题,用时2h
  • c语言-数据结构-二叉树的遍历
  • 数字ic后端设计从入门到精通11(含fusion compiler, tcl教学)全定制设计入门
  • arm版本的ubuntu安装git或者vim等方法
  • 力扣-23.合并K个升序链表
  • Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比
  • 查看.bin二进制文件的方式(HxD十六进制编辑器的安装)
  • 电路仿真——精密半波整流电路
  • 133. Java 泛型 - 目标类型与方法参数:重载解析与类型推导
  • 网络编程(数据库)
  • 在虚拟环境中复现论文(环境配置)
  • 力扣 hot100 Day46
  • 01 启动流程实例
  • 基于docker的redis集群
  • 开源 python 应用 开发(七)数据可视化