3-reactive

 

 

<template>
  <div>数组 {{ message }}</div>
  <div>数组 {{ listOne }}</div>
  <div>对象 {{ obj }}</div>

  <div>
    <button @click="change1">change1</button>
  </div>

  <div>
    <button @click="change2">change2</button>
  </div>

  <div>{{ msg }}</div>
</template>

<script setup lang="ts">
import { reactive, readonly, shallowReactive, ShallowReactive } from 'vue';

//异步赋值方法一
let message = reactive<number[]>([])  //接收数组[] 或者对象 {}
setTimeout(() => {
  let arr = [1, 2, 3, 4]
  //message = arr //负值方式会破坏响应式
  message.push(...arr) //可以使用push
  console.log(message)
}, 1000)

//异步负值方法二
type O = {
  list: number[]
}
let listOne = reactive<O>({
  list: []
})
setTimeout(() => {
  listOne.list = [1, 2, 3, 4, 5]
}, 1000);

//修改对象值
let obj = reactive({
  name: '测试'
})  //接收数组[] 或者对象 {}
obj.name = '修改值'

//readonly
let person = reactive({
  count: 1
})
// let copy = readonly(person)
// copy.count++ //会提示错误

//ShallowReactive
let msg = shallowReactive({
  test: '测试开发',
  nav: {
    bar: {
      name: '多层嵌套对象'
    }
  }
})

const change1 = () => {
  msg.test = '我被改啦'
}

const change2 = () => {
  msg.nav.bar.name = '我想修改深层次obj对象' //深层次的不会被修改
}

</script>

<style scoped>

</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值