Vue.js中数组的两个奇葩操作,list.length=0作清空、利用下标去改值均不起作用?

Vue.js中数组的两个奇葩操作,list.length=0作清空、利用下标去改值均不起作用?

一、 两个奇葩操作

定义数组为list,要想让list里的内容清空,脑子里的代码是不是 :
list.length=0 ,我们来试一下:
这是原始代码,往list里添加了a、b。

<body>
   <div id="app">
       {{list}}
   </div>
    <script>
        var vm = new Vue({
            el:'#app',
            data:{
                list:['a','b']
            },
            methods:{
            },
        })
    </script>
</body>

跑一下
在这里插入图片描述
在控制台输入list.length=0,看能不能成功清除:
在这里插入图片描述
结果是:不起作用,那么,为什么呢?
这是因为我们的原生js有个缺陷,对于数组.length=0清空这个做法并不能得到响应,因为它用的是Object.defineProperty(),它具有这个特性。
另外还有一个奇葩操作就是,如果想让数组里的a,修改为y,
输入list[0]='y’也是不起作用的,下面我们来验证一下:
在这里插入图片描述

二、解决(替换)方法

那么,问题存在,必然要知道解决办法。
1,清空问题
vm.list.length=0不起作用,我们可以绕一个弯,用splice:
vm.list.splice(0,vm.list.length)
操作示范:
在这里插入图片描述
成功清空!
2,利用下标改值问题
其实list[0]=‘y’,不是不起作用,它已经修改了数据,只是没有重新渲染出来,
我们只要在修改后重新渲染一遍就可,使用¥forceupdate():
在这里插入图片描述
搞定

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue 3,想要清空reactive数组,可以使用shallowRef来定义一个数组,并通过修改其value属性将其清空。根据引用的代码示例,假设我们有一个名为component_list的shallowRef数组,可以通过将其value属性设置为数组清空它。 ```javascript component_list.value = []; ``` 通过将value属性设置为数组,我们可以清空component_list数组的所有元素。这样,Vue页面上展示的数据也将被清空。 需要注意的是,shallowRef只是对一个值的浅层响应式包装,它只响应值的改变,而不会响应值内部元素的改变。因此,如果数组的元素是对象或其他引用类型,需要单独处理每个元素的清空。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Vue3 清空Reactive定义的数组](https://blog.csdn.net/m0_50080847/article/details/128382181)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue踩坑记录之数组定义和赋值问题](https://download.csdn.net/download/weixin_38739919/13980102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭耀迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值