响应式数据是vue的一大亮点,下面我们来聊聊如何声明响应式数据
目录
直接声明变量
- 直接声明变量并不能使之拥有响应性
- 示例:
<script setup>
let num = 0;
const clickFun = () => {
console.log("num:", ++num);
}
</script>
<template>
<div style="display:flex;flex-direction: column;">
<span>num : {{num}}</span>
<button @click="clickFun()">修改</button>
</div>
</template>
- 运行结果:
- 多次点击按钮后,控制台打印的num值虽然有增加,但在html页面显示的num值却不变
ref(基本数据类型)
- 使用ref(基本数据类型)即可把一个基本数据类型的值转化为响应式并返回
- 基本数据类型:
- String
- Number
- BigInt
- Boolean
- Symbol
- Undefined
- Null
- 示例:
<script setup>
import { ref } from 'vue';
let num = 0;
let refNum = ref(0);
console.log("refNum:", refNum);
console.log("refNum.value", refNum.value);
const clickFun = () => {
console.log("num:", ++num);
console.log("refNum.value:" , ++refNum.value);
}
</script>
<template>
<div style="display:flex;flex-direction: column;">
<span>num : {{num}}</span>
<span>refNum : {{refNum}}</span>
<button @click="clickFun()">修改</button>
</div>
</template>
- 运行结果:
- 注意ref()返回的是一个refImpl的对象,它的value属性才是我们要的数据,所以在js中操作时需要.value,但在<template>中会自动展开为内部值
- 可以看到,通过ref()获取的变量是响应式的,会随着变量值的改变而体现在html页面中
reactive(对象)
- reactive()需要我们传入一个对象
- 示例:
<script setup>
import { ref,reactive } from 'vue';
let num = 0;
let refNum = ref(0);
let rea = reactive({
num:0
});
console.log("refNum:", refNum);
console.log("refNum.value", refNum.value);
console.log("rea", rea);
const clickFun = () => {
console.log("num:", ++num);
console.log("refNum.value:" , ++refNum.value);
console.log("rea.num:", ++rea.num);
}
</script>
<template>
<div style="display:flex;flex-direction: column;">
<span>num : {{num}}</span>
<span>refNum : {{refNum}}</span>
<span>rea.num : {{rea.num}}</span>
<button @click="clickFun()">修改</button>
</div>
</template>
- 运行结果:
- reactive()也可以让变量得到响应性
- 但它需要传入对象,而ref()需要传入基本数据类型
- 而且它返回的是一个proxy对象,但我们在js操作和在<template>绑定时,都可以直接访问和操作其内部变量。
paxil price
xenical 120mg roche
orlistat tablets buy online
hydroxychloroquine 800mg
prednisone 2 mg tablets
zovirax 200 mg cost
120 mg citalopram
mikä aiheuttaa mielisairautta
accutane price australia
ventolin 2018
where can i get xenical
advair medicine
discount pharmacy mexico
lisinopril 3.125
dapoxetine 60 mg price
order nexium
trazodone price canada
phenergan generic
clomid 50mg pills
medicine toradol 10 mg
advair diskus cost in canada
order inderal online
prednisone pill 20 mg
citalopram generic cost
ciprofloxacin 750 tablet
prazosin
avana australia
propranolol 60 mg capsule
gabapentin generic cost
cost of elavil in usa
generic plavix 75 mg
antabuse 250 mg tablets
ivermectin stromectol
buy amoxicillin mexico
erythromycin medication
azithromycin 500mg price in usa
advair diskus 500 50 mg
valtre
price of lisinopril 5mg
cafergot no prescription
ivermectin 3mg tablet
macrobid 100 mg australia macrobid 100 mg otc macrobid purchase
albendazole generic cost
plavix generic in usa
how to get accutane in mexico
acyclovir 200 mg tablet
advair 500 mcg
metformin buy india
wellbutrin 25 mg
prazosin 2 mg