广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3中的reactive函数声明数组方式
  • 542
分享到

vue3中的reactive函数声明数组方式

2024-04-02 19:04:59 542人浏览 泡泡鱼
摘要

目录reacitve函数如何声明一个响应式数组解决办法使用Reactive包裹数组赋值需求代码 reacitve函数如何声明一个响应式数组 如以下案例 <templa

reacitve函数如何声明一个响应式数组

如以下案例

<template>
  <div>
      <div v-for="item in arr" :key="item"> 
          {{item}}
      </div>
        <button @click="change">change</button>
  </div>
</template>
<script>
  import { defineComponent, reactive,ref } from 'Vue';
  export default defineComponent({
    setup(props,context) {
      let arr = reactive([])
      function change(){
        console.log("change...");
        let newArr = [1,2,3]
        arr = newArr
      }
      
      return{
        arr,
        change
      }
    },
  });
</script>
<style scope></style>

点击change按钮,发现并没有什么变化,这是因为arr = newArr这行代码让arr失去了响应式。

解决办法

使用ref函数 

 setup(props,context) {
      let arr = ref([])
      function change(){
        console.log("change...");
        let newArr = [1,2,3]
        arr.value = newArr
      }
      
      return{
        arr,
        change
      }
    },

使用数组的push方法 

 setup(props,context) {
      let arr = reactive([])
      function change(){
        console.log("change...");
        let newArr = [1,2,3]
        arr.push(...newArr)
      }
      
      return{
        arr,
        change
      }
    },

创建一个响应式对象,对象的属性是数组

<template>
  <div>
      <div v-for="item in arr.list" :key="item"> 
          {{item}}
      </div>
        <button @click="change">change</button>
  </div>
</template>
<script>
  import { defineComponent, reactive,ref } from 'vue';
  export default defineComponent({
    setup(props,context) {
      let arr = reactive({
        list:[]
      })
      function change(){
        console.log("change...");
        let newArr = [1,2,3]
        arr.list = newArr
      }
      
      return{
        arr,
        change
      }
    },
  });
</script>

使用reactive包裹数组赋值

需求

将接口请求到的列表数据赋值给响应数据arr

代码 

const arr = reactive([]);
const load = () => {
  const res = [2, 3, 4, 5]; //假设请求接口返回的数据
  // 方法1 失败,直接赋值丢失了响应性
  // arr = res;
  // 方法2 这样也是失败
  // arr.concat(res);
  // 方法3 可以,但是很麻烦
  res.forEach(e => {
    arr.push(e);
  });
};

方法1:vue3 使用 proxy,对于对象和数组都不能直接整个赋值;

方法2:concat 不改变原数组

// 方法4
const state = reactive({
  arr: []
});
state.arr = [1, 2, 3]
// 方法5
const state = ref([])
state.value = [1, 2, 3]
// 方法6
const arr = reactive([])
arr.push(...[1, 2, 3])
// 亦或者
arr.length = 0 // 清空原数组
arr.push(...res) // 解构然后push进去

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: vue3中的reactive函数声明数组方式

本文链接: https://www.lsjlt.com/news/149631.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3中的reactive函数声明数组方式
    目录reacitve函数如何声明一个响应式数组解决办法使用reactive包裹数组赋值需求代码 reacitve函数如何声明一个响应式数组 如以下案例 <templa...
    99+
    2022-11-13
  • PHP数组的声明方式
    这篇文章主要介绍“PHP数组的声明方式”,在日常操作中,相信很多人在PHP数组的声明方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP数组的声明方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一、...
    99+
    2023-06-17
  • vue3组合式API中setup()概念和reactive()函数的用法
    目录⭐一、组合式API对比vue2项目结构在vue2当中在vue3当中⭐二、setup()函数的使用2.1setup()函数的基础概念2.2.setup()初体验2.3.reacti...
    99+
    2023-05-14
    vue3 setup()与reactive()使用 vue3组合式API vue3 setup()
  • java声明数组的三种方式
    Java声明数组的三种方式有:1. 静态声明:使用静态初始化方式声明数组,即在声明数组的同时,给数组元素赋初值。例如:int[] a...
    99+
    2023-08-28
    java
  • java中声明数组的方式有哪些
    在Java中,声明数组的方式有以下几种:1. 声明一个数组变量,但不初始化数组:    ```   &...
    99+
    2023-08-30
    java
  • js函数声明的方式有几种
    这篇文章主要介绍“js函数声明的方式有几种”,在日常操作中,相信很多人在js函数声明的方式有几种问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”js函数声明的方式有几种”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • java声明数组的方式有哪些
    在Java中,声明数组的方式有以下几种:1. 声明数组并指定长度:   ```   int[] array = ...
    99+
    2023-08-30
    java
  • shell声明数组的方式有哪些
    在 shell 中,声明数组的方式主要有以下几种:1、使用小括号可以使用小括号来声明数组,例如:```shellarr=(1 2 3...
    99+
    2023-05-13
    shell声明数组 shell
  • java的数组声明方式有哪些
    在Java中,有以下几种方式可以声明数组:1. 声明数组并分配内存空间:```javaint[] array = new int[5...
    99+
    2023-08-12
    java
  • vue3组合式API中setup()概念和reactive()函数的用法是什么
    本篇内容主要讲解“vue3组合式API中setup()概念和reactive()函数的用法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3组合式API中setup()概念和react...
    99+
    2023-07-05
  • JavaScript的三种声明函数方式是什么
    这篇“JavaScript的三种声明函数方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2022-10-19
  • 详解vue3中setUp和reactive函数的用法
    1 setUp的执行时机 我们都知道,现在vue3是可以正常去使用methods的。 但是我们却不可以在setUp中去调用methods中的方法。 为什么了??? 我们先了解一下下...
    99+
    2022-11-12
  • 详解Vue3中ref和reactive函数的使用
    目录前言ref 函数介绍ref 函数使用ref 函数处理基本数据类型ref 函数处理复杂数据类型ref 函数获取单个DOM元素其他相关方法reactive 函数介绍reactive ...
    99+
    2022-11-13
  • JavaScript函数声明和函数表达式的区别
    目录一、写法不一样二、函数声明加载三、分析浏览器如何执行代码一、写法不一样 //函数声明 let res1 = sum1(10 , 20) console.log(res1...
    99+
    2022-11-13
  • GO中 分组声明与array, slice, map函数
    目录iota 枚举Go 程序设计的一些规则数组切片mapmake、new 操作前言: 在 Go 语言中,同时声明多个常量、变量,或者导入多个包时,可采用分组的方式进行声明。 例如下面...
    99+
    2022-11-13
  • javascript中的函数怎么声明
    这篇文章主要介绍了javascript中的函数怎么声明,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在js中,...
    99+
    2022-10-19
  • Javascript中怎么实现函数声明和函数表达式
    Javascript中怎么实现函数声明和函数表达式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Javascript是一种由N...
    99+
    2022-10-19
  • Java之int数组声明与初始化方式
    目录Java int数组声明与初始化java数组 动态初始化和静态初始化1.数组是指有序的元素序列2.数组的初始化3.解析含义4.两种常见的初始化方式5.动态初始化数组的格式6.使用...
    99+
    2023-02-28
    Java int数组声明 Java int数组初始化 int数组声明与初始化
  • JS中函数表达式和函数声明的不同点是什么
    本篇内容介绍了“JS中函数表达式和函数声明的不同点是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1....
    99+
    2022-10-19
  • JavaScript 函数表达式与函数声明的用法及区别
    目录前言什么是函数声明?函数声明的好处什么是函数表达式?函数表达式的好处函数表达式和函数声明之间的区别函数表达式中的作用域如何在表达式和声明之间进行选择何时选择函数声明与函数表达式在...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作