vue3 reactive使用(四)

1:reactive全家桶

rective直接赋值无效,会破坏proxy响应式代理

javascript 复制代码
const newList = reactive<string[]>([])
const newCreate = () => {
  setTimeout(() => {
    const res = ['生活', '升华', '生生不息']
    newList = res  
    console.log('newList:', newList)  // dom没有变化,log会有变化
  }, 500)
}

变通

方案一
javascript 复制代码
const newCreate = () => {
  setTimeout(() => {
    const res = ['生活', '升华', '生生不息']
    newList.push(...res)  // 使用push方法,和解构语法
    console.log('newList:', newList) // dom双向绑定成功,log也正常
  }, 500)
}
方案二

添加一个对象,把数组作为一个属性去解决

javascript 复制代码
let newList = reactive<{
  array: string[]
}>({
  array: [],
})

const newCreate = () => {
  setTimeout(() => {
    const res = ['生活', '升华', '生生不息']
    newList.array = res  // 直接赋值,可以生效
    console.log('newList:', newList)  // dom和log正常显示
  }, 500)
}
  1. readonly:只读
  2. shallowReactive和shallowRef类似,做浅层处理
相关推荐
Warren9825 分钟前
Html 5简介(学习笔记)
java·前端·css·笔记·学习·html·html5
嘵奇2 小时前
SpringBoot五:Web开发
java·前端·spring boot
年纪轻轻只想躺平2 小时前
vue3响应式数据原理
前端·javascript·vue.js
drebander3 小时前
Docker 与 Nginx:容器化 Web 服务器
前端·nginx·docker
咔咔库奇4 小时前
【react】基础教程
前端·react.js·前端框架
前端小王hs4 小时前
MySQL后端返回给前端的时间变了(时区问题)
前端·数据库·mysql
千篇不一律5 小时前
工作项目速刷手册
服务器·前端·数据库
我命由我123456 小时前
微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
javascript·微信小程序·小程序·typescript·html·html5·js
天天向上10246 小时前
VSCode 使用import导入js/vue等时添加智能提示,并可跳转到定义
javascript·vue.js·vscode
阿丽塔~6 小时前
vue3 下载文件 responseType-blob 或者 a标签
前端·vue·excel