Vue3:常用的Composition API(组合API)
1、
<template>
<div class="home">
<h1{{msg}}</h1>
</div>
</template>
<script>
export default {
setup() {
// 现在暂时还不考虑响应式数据的问题
// 数据
let msg = "hello world!"
// 方法
let fn= function (){}
return {msg}
}
}
</script>
- 若返回一个渲染函数,则可以自定义渲染内容(了解)
<script> import {h} from 'vue' export default { setup() { // 返回一个渲染函数 // h相当于document.CreateElement() return ()=>{return h("h1","vue3返回渲染函数")} } } </script>
-
-
尽量不要和Vue2.x配置混用
-
Vue2.x配置(data,methods,computed......)中可以访问setup中的属性,方法
-
但在setup中不能访问到Vue2.x配置(data,methods,computed......)
-
如有重名,setup优先
-
*注
<script setup>
//这种script标签可以不用写返回值
</script>
2、
-
-
语法:const xxx = ref("value")
-
创建一个包含响应式的数据的引用对象(reference对象)
-
js中操作数据:xxx.value
-
模板中读取数据不需要.value,直接<div>{{xxx}}</div>
<template>
<div class="home">
<p>{{n}}</p>
<button @click="changeMsg()">点击测试vue3.0的基本数据</button>
</div>
</template>
<script>
import { ref } from "vue"
export default {
setup() {
// 1.基本数据类型
let n= ref(1);
let obj= ref({name:"lili"})
// 方法
let changeMsg = function () {
console.log(name.value);
}
return {
name, age, changeMsg, more, changeMore
}
}
}
</script>
-
注意
-
接收的数据类型可以是基本数据类型也可以是引用数据类型
-
基本类型的数据:响应式依然是靠Object.defineProperty()的get和set完成的
-
-
3、
-
-
语法:const 代理一个对象 = reactive(被代理的对象) 接收一个对象(或数组),返回一个代理器对象(proxy对象)
-
reactive定义的响应式数据是“深层次的”
-
<template>
<div class="home">
<h1>显示vue3.0的数据和方法</h1>
<h2>姓名:{{name}}</h2>
<h2>年龄:{{age}}</h2>
<h2>工作:{{more.job}}</h2>
<h2>薪资:{{more.salary}}</h2>
<h2>c:{{more.a.b.c}}</h2>
<button @click="changeMsg()">点击测试vue3.0的基本数据</button>
<button @click="changeMore()">点击测试vue3.0的引用数据</button>
</div>
</template>
<script>
//1.引入
import {ref,reactive} from "vue"
export default {
setup() {
let name = ref("lucy");
let age = ref(18);
let more = reactive({
job: "前端开发工程师",
salary: "10k",
a:{
b:{
c:"ccccccccccccc"
}
}
})
// 方法
let changeMsg = function () {
name.value = "lili";
age.value = 19;
console.log(name, age);
}
//2.修改
let changeMore = function () {
more.salary = "20K";
}
return {
name, age, changeMsg, more, changeMore
}
}
}
</script>
4、
<template>
<div class="home">
<h1>vue3.0的计算属性----------{{count}}</h1>
</div>
</template>
<script>
// 注意:vue2.x和vue3.x不要混用
// 1.引入
import { computed } from "vue"
export default {
data() {
return {};
},
computed: {
count() {}
},
setup() {
// 2.使用
let count= computed(() => {})
return { count}
}
}
</script>
浙公网安备 33010602011771号