vue3 use plugin reactive readonly ref简单用法

72 阅读2分钟

这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情

其实vue2的插件写法和vue3差不多,就是在最后引用的时候会有区别

vue2的写法 就是一个vue模版 主要区别在引用是使用 a.vue

<template>
  <div class="confirmpopup">
     vue2的组件
  </div>
</template>

b.js

import promptComponent from './a.vue'
export default{
   install(Vue) { // 传进来的vue实例
         
   }

}

然后在main.js里用use方法就行可以了

vue3的写法差不多。模版一样 引用的方式有所却别

c.js install 里传过来两个参数 app 就是vue的实例,options是use方法的第两个参数

用法 app.use(k,{ a: '' })

export default{
   install(app,options) { //  app 是vue是实例 options 是上面use传过来的参数
         
   }

}

区分并不大, reactive vue3的使用其实和vue2的 observable()用法差不多 都是返回一个被代理后的响应式对象

vue2的observable()大家应该用到的都不多 这是Vue2的静态方法使用

  let d = Vue.observable({  name: 'dddd' }) // 对象代理
  console.log("observable",d)

打印出来的图片

vue34.png

vue3 用reactive返回一个对象 这个在vue3就比较常用了 毕竟vue3和vue2的写法上还是有区别的 vue3 是需要结构出来使用

import { ref, 
 reactive,
 } from 'vue'
 
 setup(props,ctx) {
  let d = reactive({ name: '3333' }) // 如果返回对象 一般都是这样用 所以在vue3中还是比较常用
 return {
     d
   }
  }

这是打印出来的图片

vue36.png

readonly 方法是返回只读的代理对象 看代码截图

vue4.png

这是打印出来的log

vue5.png 如果我们更改readonly方法返回的对象会有警告,并且数据并不会更改,嵌套对象一样生效

ref 方法 也是返回一个对象,我们我们主要用的是其value 属性

如果我们用ref({ name: "dadas" })传入一个对象,vue3会用ref内部会reactive方法,返回一个reactive对象 代码截图

vue7.png 看下打印出出来

vue8.png 日志截图可以看出来 虽然是ref对象 但是value是 reactive返回的对象