vue2自创项目——饭搭子项目总结

文章目录

  • 问题
    • vuex状态管理
    • 父子组件数据展示
    • 路由跳转
    • 用户信息的修改
  • 改进

本篇主要总结出现的问题和一些解决方法

问题

vuex状态管理

在登录功能中,我使用了local storage进行了用户信息的持久化处理,为此,我在vuex里定义了一个方法,在这里插入图片描述
详细代码如下:
index.js:

import Vue from "vue";
import Vuex from "vuex";
import user from "./modules/user";Vue.use(Vuex)export default new Vuex.Store({getters: {token (state) {return state.user.userInfo.token}},modules:{user,}
})

user.js

import { getInfo,setInfo,removeInfo } from "@/utils/storage"export default {namespaced: true,state () {return {userInfo: getInfo()}},mutations: {setUserInfo (state, obj) {state.userInfo = objsetInfo(obj)},resetUserInfo(state) {state.userInfo = {userId: ''}removeInfo()}},actions: {updateUserInfo({ commit }, obj) {commit('setUserInfo', obj);},logout({ commit }) {commit('resetUserInfo');}}}

storage.js

const INFO_KEY  = 'eat_info'
// 获取个人信息
export const getInfo = () => {const result = localStorage.getItem(INFO_KEY)return result ? JSON.parse(result) : {userId: '',}}// 设置个人信息export const setInfo = (info) => {localStorage.setItem(INFO_KEY, JSON.stringify(info))}// 移除个人信息export const removeInfo = () => {localStorage.removeItem(INFO_KEY)}// 获取搜索历史
export const getHistoryList = () => {const result = localStorage.getItem(HISTORY_KEY)return result ? JSON.parse(result) : []
}// 设置搜索历史
export const setHistoryList = (arr) => {localStorage.setItem(HISTORY_KEY, JSON.stringify(arr))
}

在页面中使用:

 this.$store.commit('user/setUserInfo',yonghu)

问题在于,在整个项目中vuex只用于了用户信息的存储,在最近看完vue3某个项目后,(虽然它用的是pinia进行状态管理),发现vuex的作用有很多,其实还可以把一些通用的方法在vuex中进行封装,在组件中进行调用,提高效率。

父子组件数据展示

提高父子组件,出现的首个问题就是子组件复用问题,因为我的项目有很多页面获取到的数据都是相同的,例如在不同模式下展示帖子数据,评论的数据,这些只有样式有一些小的差别,但是我没有进行组件复用,现在想起来,是可以进行组件复用的,不用的数据就丢在那里,不用管就可以。由于没有复用,导致我的子组件有很多,冗杂繁琐
在这里插入图片描述
第二个问题就是父组件得到数据,向子组件展示中,由于我用数组包起来向子组件传递,而且是两层数组,传到子组件时,有的展不开,导致数据错乱,理想状态下是单条数据向子组件传递,这样好展示,在网上搜索后,用这种方法得到了解决。
两层for循环遍历

<div class="commend-list"><template v-for="nestedArray in CommendList"><CommendItems v-for="comment in nestedArray" :item="comment" :key="comment.commentId"></CommendItems></template></div>

在子组件中:

props: {item: {type: Object,default: () => {return {}},}},

路由跳转

在用push方法进行跳转并携带参数,在跳转后的页面,一刷新页面跳转来的参数就没有了,如何解决这个问题?如下代码:

 this.$router.push({name: 'pinglun',params: {param1: param1,param2: param2}});

在路由中定义path时加上

path: '/pinglun/:param1/:param2',
 //接收路由挑来的值this.receivedParam1 = this.$route.params.param1;this.receivedParam2 = this.$route.params.param2;

用户信息的修改

首先是头像的展示和修改,这个功能卡了很长时间
在这里插入图片描述
数据定义:

  data() {return {form: {userId:'',userNickname: '',userGender: '',userMajor: '',userLocation: '',},touImg:'',fileList: [], // 保存上传的文件};},

利用ui中的功能将图片上传

 afterRead(file) {console.log(file.file);changeTouxiang(this.userInfo.userId,file.file).then((res)=>{console.log(res);})}

在数据库中获取图片展示出来

   getMyDate(this.userInfo.userId).then(res=>{this.touImg=res.data.userAvatarthis.fileList.push({ url:  this.touImg,isImage: true  })console.log(this.touImg);})

对于信息修改,有些信息需要修改,有些不需要修改,但不管修不修改,都要传到数据库中进行更新

 // 更新用户信息const updatedUserInfo = {...this.userInfo,userNickname: this.form.userNickname,userGender: this.form.userGender,userMajor: this.form.userMajor,};

改进

1.分页数据的展示和管理
2.对于弹窗的应用,例如:弹窗修改某些数据
3.展示多张图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【delphi11】上古语言delphi基础探索【一、学习计划设定】——有人说她老,我却认为她是美人迟暮。

高手程序员选择C、聪明的程序员选择delphi。一句过时的语句送给大家&#xff0c;愿感兴趣的伙伴陪我走下去&#xff0c;这段无意义但是会非常好玩的旅程。 第一阶段&#xff1a;Delphi 基础&#xff08;1-2 个月&#xff09; 环境熟悉 安装 Delphi IDE。探索 IDE 的各个组成部…

231217 刷题日报

1. LRU 2.LFU 3. 十字链表&#xff0c;加法&#xff0c;乘法 public class Main {public static void main(String[] args) {CrossLinkedList list new CrossLinkedList(3, 3);list.insert(0, 0, 1);list.insert(1, 0, 5);list.insert(2, 2, 3);list.display();System.out.p…

Apple Find My「查找」认证芯片找哪家,认准伦茨科技ST17H6x芯片

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…

HarmonyOS与Data-Ability基本概念的使用方法及使用步骤

基本概念 使用Data模板的Ability&#xff08;以下简称“Data”&#xff09;有助于应用管理其自身和其他应用存储数据的访问&#xff0c;并提供与其他应用共享数据的方法。Data既可用于同设备不同应用的数据共享&#xff0c;也支持跨设备不同应用的数据共享。 数据的存放形式多…

【python+requests】接口自动化测试

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

山海鲸可视化软件:打破数据孤岛,支持多种数据源连接

在之前的文章中为大家介绍了山海鲸可视化软件的主要应用场景&#xff0c;那么作为山海鲸可视化软件的开发者&#xff0c;我希望大家能更全面的了解我们这款免费的数字孪生软件&#xff0c;从而轻松上手。本文从数字孪生第一步接入数据开始为大家介绍一下山海鲸可视化软件支持的…

2021年数维杯国际大学生数学建模D题2021年电影市场票房波动模型分析求解全过程文档及程序

2021年数维杯国际大学生数学建模 D题 2021年电影市场票房波动模型分析 原题再现&#xff1a; 1、电影票房预测建模背景   随着人们文化消费需求的增加&#xff0c;电影院和银幕的数量不断增加&#xff0c;我国的电影产业不断呈现出繁荣景象。2019年&#xff0c;全国电影票房…

12、ble_mesh_vendor_model 服务端,自定义模型

1、初始化流程&#xff0c;存储初始化&#xff0c;nvs擦除&#xff0c; board_init();初始化LED。 2、bluetooth_init();ble协议栈初始化 3、ble_mesh_get_dev_uuid(dev_uuid);//获取设备uuid加载到mac&#xff0c;后两位dev uuid 4、ble_mesh_init();//ble mesh协议栈初始化。…

质因数个数

package 课程; import java.util.Scanner; public class 质因数个数 { public static void main(String[] args) { Scanner scanner new Scanner(System.in); long n 1200000; int ans 1; int cnt 0; for(int i 2;i<Math.sqrt(n);i) { // if(n%i0) ans; cnt 0; whil…

【ubuntu】Linux常用视频播放软件

在Ubuntu操作系统上&#xff0c;有许多常用的视频播放软件可供选择。以下是一些常见的视频播放软件&#xff1a; 1. VLC 媒体播放器 安装命令&#xff1a; sudo apt-get install vlcVLC是一个开源、跨平台的多媒体播放器&#xff0c;支持播放几乎所有的音频和视频格式。 2.…

Nginx编译安装+Nginx模块详解+Nginx虚拟主机(新版)

Nginx编译安装Nginx模块详解Nginx虚拟主机 Nginx编译安装Nginx模块详解Nginx虚拟主机一、编译安装Nginx服务二、nginx版本升级1、nginx平滑升级的步骤2、示例 三、添加Nginx系统服务1、使用init.d脚本2、使用 systemd 服务配置 四、认识Nginx服务的主配置文件 nginx.conf1、全局…

13.Spring 整合 Kafka + 发送系统通知 + 显示系统通知

目录 1.Spring 整合 Kafka 2.发送系统通知 2.1 封装事件对象 2.2 开发事件的生产者和消费者 2.3 触发事件&#xff1a;在评论、点赞、关注后通知​编辑 3.显示系统通知 3.1 通知列表 3.1.1 数据访问层 3.1.2 业务层 3.1.3 表现层 3.2 开发通知详情 3.2.1 开发数据…

HttpRunner接口自动化测试框架

简介 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 项目地址&#xff1a;GitHub - httprunner/httprunner: HttpRunner 是一个开源的 API/UI…

8.鸿蒙app java代码构建用户界面

鸿蒙app java代码构建用户界面 background_ability_main.xml <?xml version"1.0" encoding"UTF-8" ?> <shape xmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:shape"rectangle"><solidohos:color"#8F71…

VMwareKali进行WIFI密码爆破

注&#xff1a;本实验所用仪器全为自己使用&#xff01;请不要侵犯他人权益 文章目录 一、连接无线网卡二、抓取TCP握手包三、aircrack-ng跑包和hashcat跑包1.aircrack2.Hashcat 环境&#xff1a; VMware Workstation 16 Pro kali-linux-2023.1 64位 python3.9.13 RT3070-U…

HarmonyOS应用开发者基础认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-27】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…

oracle怎么存放json好

Oracle数据库提供了多种方式来存储JSON数据。你可以将JSON数据存储在VARCHAR2、CLOB或BLOB数据类型中&#xff0c;或者使用Oracle提供的JSON数据类型。 如果你选择使用VARCHAR2数据类型来存储JSON数据&#xff0c;你可以直接将JSON字符串存储在其中。例如&#xff1a; CREATE…

[论文笔记] 大模型gpu机器推理测速踩坑 (llama/gpt类)

cpu没报错,换gpu就报错。以下是一些踩坑: 坑1:要指定gpu,可以在import torch之前指定gpu。 model = LlamaForCausalLM.from_pretrained(model_path, trust_remote_code=True).to(device) 报错: RuntimeError(Expected all tensors to be on the same device, but found …

C#基础——条件语句、循环语句、goto语句

C#基础——条件语句和循环语句 1、条件语句 根据判断条件&#xff0c;执行不同的代码片段。 if…else 语法结构&#xff1a; if(条件){ 条件为true时执行的代码 } else { 条件为false时执行的代码 } if (1 2) { //小括号里面是判断条件&#xff0c;返回的是一个布尔值Console…

SAR舰船检测数据集总结

Ships in Satellite Imagery 该数据集由从加利福尼亚旧金山湾和圣佩德罗湾地区收集的 Planet 卫星图像中提取的图像芯片组成。它包括 4000 张 80x80 RGB 图像&#xff0c;标有“船”或“无船”分类。图像芯片源自PlanetScope全画幅视觉场景产品&#xff0c;经正射校正至3米像素…