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

对网站建设的建议电脑系统优化软件排行榜

对网站建设的建议,电脑系统优化软件排行榜,品牌策划案,新疆电力建设有限公司网站在vue3中,我们定义响应式数据无非是ref和reactive。 但是有的小伙伴会踩雷!导致定义的响应式丢失的问题。 reactive丢失响应式的情况1(直接赋值) 场景: 1.你定义了一个数据:let datareactive({name:"",age:"" }) 2.然后你…
在vue3中,我们定义响应式数据无非是ref和reactive。
但是有的小伙伴会踩雷!导致定义的响应式丢失的问题。

reactive丢失响应式的情况1(直接赋值)


场景:
1.你定义了一个数据:let data=reactive({name:"",age:""
})
2.然后你请求了接口,赋值给data
let res=await getUserApi();  //请求接口
data=res.data;                     //将返回的结果赋值给data

大错特错!!!

reactive丢失响应式的情况2(解构赋值)


场景:
1.你定义了一个数据:let data=reactive({name:"",age:""
})
2.然后你解构了
let {name}=data; //解构赋值

大错特错!!!

了解响应式

1.ref 定义数据(包括对象)时,都会变成 RefImpl(Ref 引用对象) 类的实例,无论是修改还是重新赋值都会调用 setter,都会经过 reactive 方法处理为响应式对象。

2.但是 reactive 定义数据(必须是对象),是直接调用 reactive 方法处理成响应式对象。如果重新赋值,就会丢失原来响应式对象的引用地址,变成一个新的引用地址,这个新的引用地址指向的对象是没有经过 reactive 方法处理的,所以是一个普通对象,而不是响应式对象。解构同理。

避坑办法:

  1. 避开直接赋值和结构,reactive直接包裹一个对象。


let data=reactive({userData:{}        //里面定义一个对象,这样赋值就不会丢失响应式了。
})//获取接口数据
let res=await getUserApi();  //请求接口
data.userData=res.data;      //将返回的结果赋值给data
  1. 简单数据类型使用ref()来进行定义。

拔高:TS对reactive里对象进行限制

上面那种情况是没在TS限制的情况下我们解决的,但是有TS用户就有疑问了,这样我在reactive内部再定义一个对象,就失去了对userData的类型限制了,怎么办呢?

答案:写类!!!!!!!!!!!!!!!!!!!

下面我们就来研究一下:

1.我们最开始会可能这样对data加上类型限制:


interface dataRule{name:string,age:number
}//定义数据
let data:dataRule=reactive({name:"",age:""
})//但是,当获取接口的时候
let res=await getUserApi();  //请求接口
//data=res.data;              //我们已经知道不能这样写了,会丢失响应式。(xxx达咩)
//2.这时聪明的你可能会这样
data.name=res.data.name;
data.age=res.data.age;//PS:
//问题一:赋值太麻烦
//这样确实可以不损坏响应式,但是如果我说你这里面不仅仅有name和age呢,而是有很多很多,那咋办?//问题二:无法对userData做类型限制
//你可能又想这样:
let data=reactive({userData:{}  
})
这样写,我们怎么能对userData做类型限制呢?

实现:分开写类!!!!!!!!!!!(重点来啦)

1.单独拿出来一个ts文件,比如user.ts


//1.定义限制userData的接口
export interface dataRule{name:string,age:number
}//写类
export class data{//定义userData并且做TS限制和赋初始值userData:dataRule={name:"",age:""}
}

在对应的.vue文件中引入该类。


//1.引入刚写好ts类文件
import {dataRule,data} from "@/type/user.ts"//2.重点来了,我实例化出来data,然后用一个变量User接收。
let User=reactive(new data());/*
//实例化出来以后相当于这样的结构:
User={userData:{name:"",age:""}
}
*///3.我们调用接口
//获取接口数据
let res=await getUserApi();  //请求接口
User.userData=res.data;      //将返回的结果赋值给data,这样也不会丢失响应式,并且userData也受了TS的限制。

结语:

在前端的道路上,我们就是要不断地保持学习,然后逐渐的变强大,沉淀自己,我们顶峰相见。

--Yan

http://www.khdw.cn/news/26118.html

相关文章:

  • 自己做网站需不需要钱it培训班大概需要多少钱
  • 旅游去过的地方可做标识网站百度热议排名软件
  • 如何在网站申请做co上海网络推广服务公司
  • 营销网站建设seo网络优化是什么工作
  • wordpress电脑安装教程抖音优化公司
  • 如何办理营业执照梅州seo
  • 建设网上商城网站的目的和意义职业教育培训机构排名前十
  • 静态网页模板制作工具青岛seo网站推广
  • 聊城seowindows优化软件
  • 深圳专业做网站专业公司百度网址安全中心
  • 怎么拥有自己的小程序网站信息组织优化
  • 网站建设是由什么组成的什么是核心关键词
  • 著名网站设计外贸网站制作推广
  • 公司做网站需要准备什么材料百度学术官网论文查重免费
  • 上犹网站建设建设网站的基本流程
  • 网站背景怎么换网站优化排名哪家性价比高
  • WordPress中文名字叫什么深圳seo优化培训
  • 西安做百度推广网站 怎样备案交换友链要注意什么
  • 猎头公司网站模板seo优化诊断工具
  • 网站开发常用的框架科学新概念外链平台
  • 36 氪 网站如何优化信息流广告优秀案例
  • seo 网站优化什么网站可以免费推广
  • 网站制作内容文案想卖产品怎么推广宣传
  • 网站建设公司如何转型谷歌广告代理商
  • 搜索案例的网站有哪些bt搜索引擎下载
  • 正规网站备案信息表seo网站排名后退
  • 网站最好推广的方式如何提高自己的营销能力
  • 宝鸡营销型网站建设深圳营销型网站设计公司
  • dedecms5.7 财经网站网店推广的重要性
  • 马鞍山网站建设报价查看今日头条