vue3+TS reactive设定类型方式

 更新时间:2024年04月28日 09:12:36   作者:小智学前端  
这篇文章主要介绍了vue3+TS reactive设定类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue3+TS reactive设定类型

定义两个接口,第一个接口限制对象属性,第二个接口写Data属性

interface User {
  username: string | null;
  age: number | null;
  sex: string | null;
}

interface Userdata {
  data: [User];
}

const userList = reactive<Userdata>({
  data: [
    {
      username: null,
      age: null,
      sex: null,
    },
  ],
});

vue中的Reactive,ref,readonly

一、Reactive api

下面我们可以一个例子

如图所示,当我们点击button按钮的时候,是没有响应式效果的,此时我们需要reactive api

那么这是什么原因呢?为什么就可以变成响应式的呢:

因为当我们使用reactive函数处理我们的数据之后,数据再次被使用时就会进行依赖收集,当数据发生改变时,所有收集到的依赖都是进行对应的响应式操作,我们编写的data选项,也是在内部交给了reactive函数将其编程响应式对象的。

二、Ref api

reactive api对传入的类型是有限制的,要求我们必须传入一个对象或者数组,但是如果我们传入基本数据类型的话,会报一个警告(String, Number, Boolean)。

template模板中,vue会自动帮助我们解包,所以我们不需要使用ref.value进行操作。

但是在setup内部,vue不会帮助我们进行解包操作,此时我们需要使用ref.value 

ref的解包只是浅层解包

如上述两张图所示,第一张图,在ref对象外层嵌套了一层普通对象,此时在template中就必须加上value才可以访问。

在下面使用reactive对象进行嵌套,此时不需要加value也可以访问。 

三、readonly api

我们通过reativeref获取的响应式对象,但是在某一些情况下,我们希望这样数据可以传给其他组件,此时这些数据不能被修改,所以我们使用readonly函数。

readonly函数传入对象后,返回结果为代理对象(proxy对象,该对象的set方法被劫持,不能进行修改)。

readonly常见的传入对象 

  • 类型一:普通对象
  • 类型二:reactive返回的对象
  • 类型三:ref返回的对象

readonly返回的对象不允许修改,但是在readonly处理的原来的对象是允许被修改的。

readonly对象的本质是:readonly对象的返回结果的setter被劫持。

上面的并没有修改readonly属性的对象,所以可以在home组件中修改。

如上图所示使用readonly属性的就不可以进行更改。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Vue.js每天必学之构造器与生命周期

    Vue.js每天必学之构造器与生命周期

    Vue.js每天必学之构造器与生命周期,告诉大家什么是Vue.js构造器与生命周期,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • webpack dev-server代理websocket问题

    webpack dev-server代理websocket问题

    这篇文章主要介绍了webpack dev-server代理websocket问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue混淆与还原的实现

    Vue混淆与还原的实现

    混淆是一种有效的保护措施,可以加密和压缩代码,使其难以被理解和修改,本文将介绍Vue混淆的概念以及如何进行还原,感兴趣的可以了解一下
    2023-12-12
  • vue中虚拟DOM与Diff算法知识精讲

    vue中虚拟DOM与Diff算法知识精讲

    这篇文章主要为大家介绍了vue中虚拟DOM与Diff算法知识的图文精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)

    vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)

    这篇文章主要介绍了vue-video-player 解决微信自动全屏播放问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Vue.js实现大转盘抽奖总结及实现思路

    Vue.js实现大转盘抽奖总结及实现思路

    这篇文章主要介绍了 Vue.js实现大转盘抽奖总结及实现思路,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • VUE中使用TypeScript装饰器实现表单验证的全过程

    VUE中使用TypeScript装饰器实现表单验证的全过程

    这篇文章主要给大家介绍了关于如何在VUE中使用TypeScript装饰器实现表单验证的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • vue多页面开发和打包正确处理方法

    vue多页面开发和打包正确处理方法

    这篇文章主要介绍了vue多页面开发和打包的正确处理方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • Vue router动态路由实现过程

    Vue router动态路由实现过程

    Vue动态路由(约定路由),听起来好像很玄乎的样子,但是你要是理解了实现思路,你会发现没有想象中的那么难,下面这篇文章主要给大家介绍了关于vue实现动态路由添加功能的简单方法,需要的朋友可以参考下
    2023-03-03
  • django中使用vue.js的要点总结

    django中使用vue.js的要点总结

    在本篇文章里小编给各位整理了关于django中使用vue.js需要注意的地方以及相关知识点,需要的朋友们跟着学习参考下。
    2019-07-07

最新评论