Vue3.0学习 (9)-双向数据绑定

双向数据绑定是啥?为什么使用?
what:实现双向数据绑定,即 js - html ;html -js
why: 比如 html 中的 input 输入框,我们可以从服务器获取相应数据显示到html中 ,如果 input 中的数据发生了变化 我们也需要相应的把数据发送到服务器保存起来。

单向数据绑定-显示数据

数据从 js 中传到 html 中(只是能显示出来数据,如果js中的数据发生了变化,html中的数据是不会变的)。

1、代码:

 <input :value="age" type="text"></input>            
 <button @click="onClick1">年龄</button>
const age =18

function onClick1(){
     console.log(age)
     alert(age)
 }

2、效果:更改输入框数据后,弹出数据未变。

在这里插入图片描述
在这里插入图片描述

3、双向数据绑定实现方式

如果想实现当输入框内数据变化后,变量的数据同时发生变化,需要使用以下方式:
1)docment.getelm…
2)event (类似小程序)
3)使用vue3.0 v-model 指令 + 响应式对象 方式实现

双向数据绑定

使用上述第三种方式实现。

1、代码:

  <input v-model="age" type="text"></input>            
  <button @click="onClick1">年龄</button>
--引入ref 方法
const {createApp,ref,reactive} = Vue

const age =ref(18)

function onClick1(){
    console.log(age)
    alert(age.value)
}

2、代码解读:

1)ref :使用 ref 会把变量包装成一个响应式对象,与普通的对象不同,普通对象与使用console.log打印出包装的对象:

普通对象
const profie{
	age:18
}
包装对象
const age=ref(18)

在这里插入图片描述
2)html 中 不需要 使用 ref 封装对象的 .value 进行数据绑定,vue内部已经处理了,直接使用:age 。 js中需要使用 age.value。

3)v-model 不是实现双向数据绑定的根本,v-model只是一个工具。数据是响应式对象才是根本。如果数据不是 ref 包装的,那么也无法实现双向数据绑定。

4)除了ref之外 也可以使用 reactive 。ref一般包装变量,reactive一般包装对象。例,用法与ref相同。

const profie = reactive { 
age :18
}

3、效果:更改数据后:数据发生变化。

在这里插入图片描述

在这里插入图片描述

单向数据绑定-真正单向

数据从 js 中传到 html 中(不仅能显示出来数据,如果js中的数据发生了变化,html中的数据是会同时变化)。

1、代码

<div>{{number}}</div>
<button @click="onincrement">+1</button>
--let number =1  必须是响应式对象才行
let number =ref(1)
function onincrement(){
    number.value++;
    console.log(number.value)
}

2、效果

点击 按钮 +1 日志中记录出变量在变, html中数据也在相应变化。
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值