响应式数据是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>绑定时,都可以直接访问和操作其内部变量。
keflex 500 mg
zoloft price canada
noroxin
muskelafslappende methocarbamol
ventolin over the counter uk
malegra 200
get valtrex online
how much is generic colchicine
zanaflex 4 mg price
buy propecia over the counter australia
inderal over the counter
lasix water pill
over the counter version of orlistat
stromectol buy
cheap zanaflex online
lasix 20 mg price in india
orlistat 120 mg buy uk
priligy tablets us
priligy tablets online
cephalexin order online uk
anafranil 25
buy sildalis online
buy cephalexin 500mg
priligy for sale in usa
where can i buy diflucan without prescription
generic malegra fxt
order motilium
toradol discount
where can i buy lasix
cost of wellbutrin generic 75mg
keflex 500mg prices
buy sertraline online
tizanidine 4mg price
tizanidine 2mg medication
online pharmacy india
lasix without script
buy generic lasix
australia price for valtrex
buy buspar online india
seroquel generic price
abilify cost australia
atarax uk prescription
lyrica 5mg
buy cheap sildalis
disulfiram india
albuterol 5
buy propecia 5mg uk
propecia canadian pharmacy
buy genuine priligy
bupropion 600 mg