响应式数据是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>绑定时,都可以直接访问和操作其内部变量。
albendazole canada price
where can i buy erythromycin
buy generic cialis 20mg
cheapest zofran zofran 4 mg nz zofran 4 mg over the counter
deltasone for sale
discover this info here
acticin
prednisone without precription
triamterene
doxycycline 200 mg daily: buy doxycycline in india – doxycyline online
15 mg prednisone daily: prednisone 20mg buy online – can i purchase prednisone without a prescription
clindamycin 300 tablet
prednisone 60 mg: can you buy prednisone without a prescription – prednisone without a prescription
clindamycin brand name in india
where can i get prednisone: fast shipping prednisone – buy prednisone with paypal canada
tizanidine online purchase
buy modafinil united states
feldene 20 mg capsules
triamterene medication
feldene piroxicam
propranolol price south africa
online cialis cialis dosage cialis 20mg review
prednisone over the counter uk: prednisone for sale – can i order prednisone
medrol coupon
feldene capsules 20 mg
albenza for sale
online doxycycline: doxycycline online purchase – doxycycline 2014
amoxicillin order online no prescription amoxicillin 500mg buy online canada – buy amoxicillin 500mg
albenza 200 mg coupon
amoxicillin without a doctors prescription amoxicillin without a doctors prescription – generic amoxicillin online
erythromycin prices
compare generic viagra prices
zanaflex capsules
buy toradol
erythromycin es 400mg
cialis 2
avodart 500mg
amoxicillin 875 mg tablet amoxicillin 50 mg tablets – where can i buy amoxicillin without prec
prednisone cream rx: prednisone 60 mg daily – order prednisone from canada
buy cheap ampicillin
clindamycin uk pharmacy
cost for cialis 20mg
canada rx cialis
purchase erythromycin without a prescription
albendazole tablet 400 mg
tamoxifen 20 mg buy online
valtrex tablets for sale
toradol script
feldene capsule 20mg
albendazole price in mexico