首页 > 其他分享 >Vue3学习(三)

Vue3学习(三)

时间:2022-11-01 10:00:12浏览次数:85  
标签:修改 对象 更新 学习 响应 user Vue3 position

<template>
    <h2>姓名:{{user.name}}</h2>
    <h2>姓名:{{user.age}}</h2>
    <h2>姓名:{{user.job.salsry}}k</h2>
    <button @click="user.name+='%'">修改姓名</button>
    <button @click="user.age++">修改年龄</button>
    <button @click="user.job.salsry+=10">修改薪水</button>
    <hr />
    <button @click="addPosition">添加位置信息</button>
    <fieldset v-if="user.position">
        <h3>省:{{user.position.province}}</h3>
        <h3>市:{{user.position.city}}</h3>
        <button @click="user.position!.province +='#'">修改省</button>
        <button @click="user.position!.city +='#'">修改市</button>
    </fieldset>
</template>
<script lang="ts">
type UserInfo={
    name:string;
    age:number;
    job:{
        salsry:number;
    }
    position?:{
        province:string;
        city:string;
    }
}
import { customRef,reactive,markRaw,shallowReadonly,shallowReactive,ref,readonly,toRefs,shallowRef} from 'vue';
export default{
    setup(){
        //shallowReactive只处理最外层属性的响应式(浅相应),里层的薪水就修改不了
        //shallowRef,将user对象替换成新的对象,改不了属性
        //let user=shallowReactive
        let user:UserInfo=reactive({
            name:"jack",
            age:20,
            job:{
                salsry:30,
            },
        })
        //readonly可以转换refImpl类型的数据为只读
        //user =readonly(user);
        //浅只读,内层不只读
        //user=shallowReadonly(user);
        
        //toRaw可以将响应式对象变成普通对象
        //普通对象与响应式对象是关联关系,非深拷贝
        //当更新普通对象时,响应对象也会更新,但不会更新界面
        //当更新响应式对象时,普通对象也会更新,会更新界面
        
        function addPosition(){
            //添加一个新的对象position,将该对象标记为非响应式对象
            user.position= markRaw({
                province:"广东",
                city:"珠海",
            })
        }
        return {user,addPosition}
    }
}
</script>

 

标签:修改,对象,更新,学习,响应,user,Vue3,position
From: https://www.cnblogs.com/zsbb/p/16846738.html

相关文章

  • Python学习笔记
    20221031:对比python的列表数组与numpy插件在数据处理效率上的差别,importtime导入了常用的模板,importnumpyasnp导入numpy模块,别名为np。当时在操作时,pycharm没有安装num......
  • node 学习笔记
    1.通过node执行js1.复制文件所在路径2.node+路径2.node读写文件1.引入file模块读取文件2.fs.readFile(‘./read/hell.txt’,function(error,data){if(error){con......
  • 学习python第二天
    ##字符串的操作##tyep查看对象的类型#name="wode"#print(type(name))###常用的类型:strintfloatbool##布尔型:bool##Ture1##flse0#print()#字符串......
  • 深度学习基础课:全连接层的前向和后向传播推导(中)
    大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序线上课程资料:本节课录像回放加QQ群,获得......
  • STM32 USB学习笔记6
    主机环境:Windows7SP1开发环境:MDK5.14目标板:STM32F103C8T6开发库:STM32F1Cube库和STM32_USB_Device_Library现在来分析哈USB器件库代码,先来看usbd_core文件,其头文件只......
  • 深度学习-yolo-多(单)目标检测
    代码是在吴恩达深度学习作业的基础上完成的。问题1:下载的yolo.h5无法使用开始想原来下载的不行我就换个地方下载呗,就绕到gitlfs去了,然后发现这个条路好像不大行得通......
  • 学习java的第二天
    java语法学习注释,标识符,关键字写代码时一定写注释这是一个良好的习惯单行注释:“//”这是一个当行注释多行注释:"/*+回车"这是一个多行注释文档注释:"/**+......
  • HTTP协议学习(补充)
    1.HTTP长连接每次http请求需要创建tcp连接,需要三次握手chrome一次支持6个并发连接创建长连接可以在请求头里面加上Connection:Keep-Alive一个TCP连接可以发送多个HTTP......
  • 学习python-Day82
    今日学习内容一、vue项目目录介绍myfirstvue 项目名字 -node_modules 文件夹,内部有很多当前依赖的模块,可以删除,但是想恢复就需要敲:npminstall-publice 文......
  • angular 指令学习
    在指令中scope定义的值的用法:例如 scope:{   local:"@nameprop",   secondLocal:"@secondNameprop",   secondLocalTest:"@threeNameprop"  ......