首页 > 其他分享 >vue3-其余新增API

vue3-其余新增API

时间:2024-11-28 16:34:21浏览次数:12  
标签:info vue address 新增 响应 API let vue3 import

shallowRef

创建一个响应式数据,但只对顶层属性进行响应式处理,只跟踪引用值的变化,不关心值内部的属性变化

import {shallowRef} from "vue"
import UserInfo from "@/components/UserInfo.vue";


let name = shallowRef("vue")
let info = shallowRef({name:"html"})

console.log(name.value) // 响应式数据

// shallowRef只处理第一层响应式数据,info.value就已经是一层了,不处理value.name
console.log(info.value.name) // 非响应式数据


shallowReactive

创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属性则不会变成响应式的

import {shallowReactive} from "vue"
import UserInfo from "@/components/UserInfo.vue";


 let info = shallowReactive({name:"html",address:{"email":123}})

console.log(info.name) // 响应式数据

console.log(info.address.email) // 非响应式数据

通过使用 shallowRef和 shallowReactive来绕开深度响应。浅层式 API 创建的状态只在其顶层是响应式的,对所有深层的对象不会做任何处理,避免了对每一个内部属性做响应式所带来的性能成本,这使得属性的访问变得更快,可提升性能

readonly

用于创建一个对象的深层只读副本

对象的所有嵌套属性都将变为只读,任何尝试修改这个对象的操作都会被阻止(在开发模式下,还会在控制台中发出警告)

用于创建不可变的状态快照、保护全局状态或配置不被修改

import {reactive, readonly} from "vue"
import UserInfo from "@/components/UserInfo.vue";


let info = reactive({name:"html",address:{"email":123}})


let address = readonly(info.address)

// 修改info.address 会同步修改address
// 但是修改address会被拒绝,address只读

shallowReadonly

readonly 类似,但只作用于对象的顶层属性,只将对象的顶层属性设置为只读,对象内部的嵌套属性仍然是可变的,适用于只需保护对象顶层属性的场景

import {reactive, shallowReadonly} from "vue"
import UserInfo from "@/components/UserInfo.vue";


let info = reactive({name:"html",address:{"email":123}})


let info1 = shallowReadonly(info)

// 修改info会同步修改info1
// 但是修改info1会被拒绝,但是可以修改info.1.address


toRaw

用于获取一个响应式对象的原始对象, toRaw 返回的对象不再是响应式的,不会触发视图更新

官网描述:这是一个可以用于临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改的特殊方法。不建议保存对原始对象的持久引用,请谨慎使用。

在需要将响应式对象传递给非 Vue 的库或外部系统时,使用 toRaw 可以确保它们收到的是普通对象

import {reactive, toRaw} from "vue"
import UserInfo from "@/components/UserInfo.vue";


// 响应式
let info = reactive({name:"html",address:{"email":123}})


// rawInfo变成了原始数据,非响应式数据
let rawInfo = toRaw(info)

markRaw

标记一个对象,使其永远不会变成响应式的

// 定义info
import {markRaw, reactive} from "vue";

let info = {name: "vue", ext: {email: 123}}

// 转换响应式info
let reactiveInfo = reactive(info)


let markRawInfo = markRaw(info)

// 不能转换成响应式
let info2 = reactive(markRawInfo)

customRef

自定义ref,使用Vue的ref定义响应式数据,数据发生变化页面会即时更新,而自定义的ref,可以对其依赖项跟踪和更新触发进行逻辑控制

import {customRef} from "vue";



let str:string = "hello word"

// 创建自定义ref响应式数据,参数是一个回调函数,返回一个对象
// 接收两个参数:track,trigger
let info = customRef((track, trigger) => {

  return {
    // info被读取的时候调用
    get() {
      // 让vue持续追踪数据,发生变化就去更新
      track()
      return str

    },
    // info被修改的时候调用
    set(value:string) {

      str = value
      // 前面可以有一些其他处理,处理完再更新
      // 通知vue页面更新
      trigger()
    }
  }

})

标签:info,vue,address,新增,响应,API,let,vue3,import
From: https://www.cnblogs.com/Mickey-7/p/18574498

相关文章

  • springboot毕设基于+Vue3的毕业生信息管理系统源码+论文+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,各行业的数字化转型不断深入。在教育领域,高校毕业生数量逐年增加,传统的毕业生信息管理方式已难以满足日益增长的需求。在......
  • vue3-组件通信
    Vue3组件通信和Vue2`的区别:移出事件总线,使用mitt代替vuex换成了pinia把.sync优化到了v-model里面把$listeners所有的东西,合并到$attrs$children被移除自定义事件(与vue2语法差异)自定义事件常用于子组件向父组件传递数据原生事件:特点的click、hover等自......
  • vue3-Pinia
    Pinia是Vue.js的一个状态管理库,用于在Vue应用程序中管理共享状态。它是Vuex的后继者,提供了一个简单、直观且灵活的方式来处理应用中的全局状态,比如用户登录信息、应用配置、购物车数据等。与Vuex相比,Pinia有更简洁的API和更好的类型支持(在Type-Script项目中),使......
  • qiankun+vite+vue3从零搭建一个微前端架构系统
    本文将记录一下从零搭建一个微前端架构系统,技术栈使用qiankun+vite+vue3,后面还会持续分享主应用与微应用通信,组件共享,性能优化等内容。qiankun官网:介绍-qiankun参考网站:MicroFrontends一、微前端架构介绍微前端是一种多个团队通过独立发布功能的方式来共同构建现......
  • NocoBase 本周更新汇总:优化 REST API 数据源插件
    汇总一周产品更新日志,最新发布可以前往我们的博客查看。NocoBase目前更新包括的版本更新包括三个分支:main,next和develop。main:截止目前最稳定的版本,推荐安装此版本。next:包含即将发布的新功能,经过初步测试的版本,可能存在部分已知或未知问题。主要面向测试用户,用于收集反......
  • 企业级短链接生成接口API推荐
    小码短链接API作为一款企业级的短链接生成工具,为企业提供了一系列强大的功能,以满足其复杂的业务需求。在这篇文章中,我们将详细探讨小码短链接API的各项功能,以及为什么它是企业级应用的理想选择。我们还将讨论如何配合自有域名和Webhook推送功能来实现更多功能。小码短链接......
  • 语音转文字-Microsoft Azure Speech Service与Web Speech API实战
    简介在现代技术驱动的世界中,语音识别已成为人机交互的重要方式。MicrosoftAzureSpeechService提供了强大的语音转文本功能,允许开发者轻松地将语音数据转换为文本。本文将指导你如何使用AzureSpeechService实现语音转文本的功能。MicrosoftAzureSpeechService优势:......
  • JDBC API
    1.DriverManager1》注册驱动,mysql8以上版本可省2》连接数据库2.Connection1》获取执行sql对象2》管理事务(统一失败)3.Statement1》执行sql语句4.ResultSet创建集合Listaccounts=newArrayList<类名>();accounts为集合名往集合中添加类accounts.add(类名);打印集......
  • Vue-模板和选项式API
    模板确定模板有几种方式以容器的innerHTML做为模板以template选项做为模板以render函数做为模板优先级:render函数>template>容器<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compat......
  • Vue-组合式API
    vite构建工具搭建vue3项目npmcreatevitecddir-vite:进入项目目录npminstall:安装依赖npmrundev:启动项目Local:http://localhost:5173/Network:use--hosttoexposeVueDevTools:Openhttp://localhost:5173/__devtools__/asaseparatewindowVueDe......