• Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法


    import { reactive, onMounted, ref,toRaw,conmpted } from 'vue'; 

    vue3中 reactive ,ref , toRaw,watch,conmpted 用法

    toRaw 返回原响应式对象

    用法: const rowList = toRaw(row)

    reactive:ref:

     ref和reactive都是Vue.js 3.x版本中新增的响应式API,用于实现组件的数据响应式更新。

    1. 数据类型不同:ref用于包装JavaScript基本类型的数据(如字符串、数字、布尔值等),而reactive可以用于包装JavaScript对象和数组等复杂类型的数据。


    2. 使用方式不同:ref需要通过在模板中使用ref指令以及在JavaScript代码中使用ref函数进行创建和使用,而reactive则需要通过调用Vue.js提供的reactive函数进行包装和创建。


    3. 访问方式不同:对于通过ref函数创建的响应式数据,我们可以通过.value属性来访问其实际值;而对于通过reactive函数创建的响应式对象,我们可以直接访问其属性或调用其方法。


    4. 设计理念不同:ref主要是为了解决单一元素/数据的响应式问题,而reactive则是为了解决JavaScript对象和数组等复杂数据结构的响应式问题。

     reactive使用方式:

    const tableData = reactive([])

    1. const tableData = reactive([])
    2. // 初始化表格数据
    3. const getTableData = async () => {
    4. try {
    5. loading.value = true
    6. const res = await getSystemConfigsList()
    7. for (let index = 0; index < res.length; index++) {
    8. tableData.push(res[index])
    9. }
    10. loading.value = false
    11. } catch (e) {
    12. console.log(e);
    13. }
    14. };

     

     ref使用方式:数组对象不建议使用ref

    1. const tableData = ref([])
    2. // 初始化表格数据
    3. const getTableData = async () => {
    4. try {
    5. loading.value = true
    6. const res = await getSystemConfigsList()
    7. tableData.value = res
    8. loading.value = false
    9. } catch (e) {
    10. console.log(e);
    11. }
    12. };

    watch使用方法:

    1. watch(() => state.identifyCode, (newVal, oldValue) => {
    2. console.log(newVal)
    3. })
    4. watch(tableData, (newVal, oldValue) => {
    5. console.log(newVal)
    6. })
    • 第一种方式 watch(() => state.identifyCode, ...) 监听的是 state.identifyCode 属性的变化。当 state.identifyCode 发生改变时,回调函数将被触发。这种方式适用于监听某个响应式对象的特定属性的变化。

    • 第二种方式 watch(tableData, ...) 监听的是 tableData 变量本身的变化。如果 tableData 是一个 ref 对象或 reactive 对象,那么当它的值发生改变时,回调函数将被触发。这种方式适用于监听整个对象或数据源本身的变化。

    • computed使用方法

      1. const setTransitionName = computed(() => {
      2. return themeConfig.value.animation;
      3. });

  • 相关阅读:
    《计算机视觉中的多视图几何》笔记(7)
    MQTT协议详解及在Android上的应用
    零基础小白怎么自学 Python ,大概要多久?
    下列程序的运行结果是 #include <stdio.h> void main() { int x = 10, y = 20, z = 30;
    C++(day5)
    Java开发:实现用户注册登录的功能
    基于Electron27+Vite4+React18搭建桌面端项目|electron多开窗口实践
    【Java基础篇 | 面向对象】—— 继承
    在unity中如何利用预制体创造物体
    人红细胞膜带3蛋白修饰重组人脂质体/融合蛋白的细胞膜脂质gpi-ny-eso-1研究
  • 原文地址:https://blog.csdn.net/xiaoming4965/article/details/133700274