首页 > 其他分享 >Vue3+.net6.0 三 响应式基础,methods

Vue3+.net6.0 三 响应式基础,methods

时间:2023-07-11 10:44:06浏览次数:39  
标签:count methods 响应 +. newObj person Vue3 someObj

这里的示例都用选项式风格

在 Vue 3 中,数据是基于 JavaScript Proxy(代理) 实现响应式的。

这个示例中输出是false,因为当你在赋值后再访问 this.someObj,此值已经是原来的 newObj 的一个响应式代理。

需要注意的是newObj 并不会变成响应式。

<script type="module">
    const { createApp } = Vue;
    const app = createApp({
        data() {
            return {
                someObj:{}
            }
        },
        mounted(){
            const newObj = {};
            this.someObj = newObj;
            console.log(this.someObj === newObj);
        }
    });
    app.mount('#appDiv');
</script>

 

方法methods

和Vue2一样,声明方法都是用methods。

定义一个属性count,在方法中让 count++。

const app = createApp({
        data() {
            return {
                //someObj:{}
                count:0,
            }
        },
        methods:{
            addCount(){
                this.count++;
            }
        }
    });

页面上来个按钮

 <button @@:click="addCount">点我++</button>  {{count}}

效果跟之前的例子是一样的,点击按钮触发addCount,令count++。

 

更新时机

当你更改响应式状态后,DOM 会自动更新。然而,你得注意 DOM 的更新并不是同步的。相反,Vue 将缓冲它们直到更新周期的 “下个时机” 以确保无论你进行了多少次状态更改,每个组件都只更新一次。

 

深层响应性

这个对比Vue2,在使用方面主要是影响到对象和数组类型的操作。

1.对象类型:

  在Vue2中,为对象新增属性后,虽然成功,但是不会被监听,但是Vue3中可以。

html部分:

<p v-for="(val,key,index) in person">
        {{key}}:{{val}}
    </p>
    <button @@click="editPerson">修改person.Name</button>
    <button @@click="addPersonAttr">增加person.Age</button>

data部分:

                person:{
                    id:1,
                    name:'张三'
                },

methods部分:

            editPerson(){
                if(this.person.name=='张三')
                    this.person.name='李四';
                else 
                    this.person.name='张三';
            },
            addPersonAttr(){
                this.person.age= 30;
            }

可以看到,无论是修改对象属性值还是新增属性,都可以按我们所预想的显示出来,而在Vue2中,我们还得用Vue.set方法。

2.数组类型:

html部分:

    <p v-for="(val,index) in intArray">
        {{index}}:{{val}}
    </p>
    <button @@click="editArray">修改数组</button>&nbsp;
    <button @@click="addArray">增加数组项</button>&nbsp;
    <button @@click="spliceArray">删除数组项</button>

data部分:

 intArray:[1,3,5,7,9]

methods部分:

            editArray(){
                this.intArray[1]=0;
            },
            addArray(){
                this.intArray.push(11);
            },
            spliceArray(){
                this.intArray.splice(0,1);
            }

修改,新增元素,删除元素都能响应。

 

标签:count,methods,响应,+.,newObj,person,Vue3,someObj
From: https://www.cnblogs.com/luyShare/p/17543372.html

相关文章

  • 前端编程开发 --- vue3 监听属性
    监听变量的变化并触发函数 <divid="app"><pstyle="font-size:25px;">计数器:{{counter}}</p><button@click="counter++"style="font-size:25px;">点我</button>//counter++表示变量自增......
  • vue(九)vue3新特性
    vue3六大亮点:性能比Vue2强可以将无用模块去掉,仅打包需要的组合API碎片(fragment),portal传送门(teleport),悬念(suspense)更好的TS支持暴露了自定义渲染APIsetup()在setup函数中声明对象,代替data()。ref声明简单对象,reactive声明复杂对象。<template><h3>{......
  • Vue3 的 hook函数
    Vue3的hook函数相当于vue2的mixin,不同在于hooks是函数;Vue3的hook函数可以帮助我们提高代码的复用性,让我们能在不同的组件中都利用hooks函数;其实就是代码的复用,可以用到外部的数据,生命钩子函数...,具体怎么用直接看代码,//一般都是建一个hooks文件夹,都写在里面impor......
  • vue3封装echarts组件数据更新不同步问题
    vue3封装echarts组件数据更新不同步问题背景:​ 记录一下项目中遇到的bug,在vue3+echarts环境下,为了方便使用,我将echarts封装成组件使用,使用的时候只需要把对应的值传入给chart组件就行,但是在传入真实数据的时候遇到了问题,就是传入value值与图表组件显示的数值不一致。(如图)......
  • vue-day11--methods实现名字案例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>methods实现名字案例</title><sc......
  • 创建Vue3.0工程
    使用vue-cli创建官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create##查看@vue/cli版本,确保@vue/cli版本在4.5.0以上vue--version##安装或者升级你的@vue/clinpminstall-g@vue/cli##创建vuecreatevue_test##启动cdvue_testnpmr......
  • Java技术分享:SpringBoot+mysql+...
    放个效果图: 准备项目首先在MySql控制台输入一下sql语句创建student数据库和student。createdatabsestudent;usestudent;CREATETABLE`student`(`stu_id`bigint(20)NOTNULL,`stu_name`varchar(45)DEFAULTNULL,`stu_sex`varchar(6)DEFAULTNUL......
  • TypeScript+Vue3
    TypeScriptAny类型和unknown顶级类型1.没有强制限定哪种类型,随时切换类型都可以我们可以对any进行任何操作,不需要检查类型2.声明变量的时候没有指定任意类型默认为any3.弊端如果使用any就失去了TS类型检测的作用4.TypeScript3.0中引入的unknown类型也被认为是top......
  • vue3.0 外部配置文件
    vue3.0外部配置文件,重点是打包后也可以修改配置参数 一、在public中创建static文件夹,在static文件夹中创建config.js文件config.js{"webSocketUrl":"http://192.168.1.5:5011/httpCli"}二、在man.js中使用 axios来读取存在app.config.globalProperties.$......
  • vue3使用表格el-table-infinite-scroll.js:18 Uncaught (in promise) Error: [el-tabl
    先看下表格里面有没有这个el-scrollbar__wrapclass类 没有的话升级一下element-plus到最新的就行你可以先查看element-plus的版本npmview element-plus下载完之后 就有了......