parent
ad71a7e8d7
commit
44e44c3f80
5 changed files with 83 additions and 69 deletions
@ -0,0 +1,44 @@ |
||||
<template> |
||||
<input type="text" v-model="keyWord"> |
||||
<h3>{{keyWord}}</h3> |
||||
</template> |
||||
|
||||
<script> |
||||
import {ref, customRef} from "vue"; |
||||
|
||||
export default { |
||||
name: 'App', |
||||
setup() { |
||||
// 自定义ref |
||||
function myRef(value) { |
||||
let timer |
||||
// console.log('---myRef---', value) |
||||
return customRef((track,trigger)=>{ |
||||
return { |
||||
get() { |
||||
console.log(`有人从myRef这个容器中读取数据了,我把${value}给他了`) |
||||
track() // 通知vue追踪数据变化 |
||||
return value |
||||
}, |
||||
set(newValue) { |
||||
console.log(`有人从myRef这个容器中数据改为了:${newValue}`) |
||||
clearTimeout(timer) |
||||
timer = setTimeout(()=>{ |
||||
value = newValue |
||||
trigger() //通知vue去重新解析模板 |
||||
}, 500) |
||||
} |
||||
} |
||||
}) |
||||
} |
||||
|
||||
// let keyWord = ref('hello') // 使用默认的ref |
||||
let keyWord = myRef('hello') |
||||
|
||||
return { |
||||
keyWord, |
||||
} |
||||
} |
||||
|
||||
} |
||||
</script> |
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,10 @@ |
||||
// 引入的不再是Vue构造函数, 引入的是一个名为createApp的工厂函数
|
||||
import { createApp } from 'vue' |
||||
import App from './App.vue' |
||||
|
||||
// createApp(App).mount('#app')
|
||||
|
||||
// 创建应用实例对象
|
||||
const app = createApp(App) |
||||
console.log('@@@',app) |
||||
app.mount('#app') |
@ -1,62 +0,0 @@ |
||||
<template> |
||||
<h4>当前求和为: {{ sum }}</h4> |
||||
<button @click="sum++">点击+1</button> |
||||
<h2>姓名:{{ name }}</h2> |
||||
<h2>年龄:{{ age }}</h2> |
||||
<h2>薪资:{{ job.j1.salary }}</h2> |
||||
<h3 v-show="person.car">车辆信息:{{ person.car }}</h3> |
||||
<button @click="name+='~'">修改姓名</button> |
||||
<button @click="age++">修改年龄</button> |
||||
<button @click="job.j1.salary++">修改薪资</button> |
||||
<button @click="showRawPerson">输出最原始的person</button> |
||||
<button @click="addCar">给人添加一台车</button> |
||||
<button v-show="person.car" @click="person.car.name += '!'">修改车名</button> |
||||
<button v-show="person.car" @click="changeCarPrice">修改价格</button> |
||||
</template> |
||||
|
||||
<script> |
||||
import {reactive, ref, toRefs, toRaw, markRaw} from "vue"; |
||||
|
||||
export default { |
||||
name: 'Demo', |
||||
|
||||
setup() { |
||||
let sum = ref(0) |
||||
let person = reactive({ |
||||
name: '张三', |
||||
age: 18, |
||||
job: { |
||||
j1: { |
||||
salary: 20 |
||||
} |
||||
} |
||||
}) |
||||
|
||||
function showRawPerson() { |
||||
console.log(person) |
||||
const p = toRaw(person) |
||||
console.log(p) |
||||
} |
||||
function addCar() { |
||||
let car = {name:'奔驰', price:40} |
||||
// person.car = car |
||||
person.car = markRaw(car) |
||||
console.log(person) |
||||
} |
||||
|
||||
function changeCarPrice() { |
||||
person.car.price++ |
||||
console.log(person.car.price) |
||||
} |
||||
|
||||
return { |
||||
sum, |
||||
person, |
||||
...toRefs(person), |
||||
showRawPerson, |
||||
addCar, |
||||
changeCarPrice |
||||
} |
||||
} |
||||
} |
||||
</script> |
Loading…
Reference in new issue