Vue3学习笔记
2024-10-21 09:50:03
为什么需要Composition API ?
主要原因:当一个组件的变得逻辑复杂的时候,痛点:多种逻辑代码被分散到组件的各个部分,比如代码的相关逻辑可能会在 data: {...},computed: {...}, methods: {...}, watch:{...}这些模块中的任何一处,维护这个组件的时候需要各种"Jump" 去寻找相关的代码逻辑 |
setup 方法:
setup这个方法用法极其类似 react的hook。 需要注意的是:在setup这个方法中是不能调用 local state、computed properties、methods 这些数据或者方法,并且也没有 this的概念。因为在执行setup的时候组件并没有实例化完成。 |
// src/components/UserRepositories.vue
import { fetchUserRepositories } from '@/api/repositories'
export default {
components: { RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
props: {
user: { type: String }
},
// inside our component
setup (props) {
// 之前的写法是需要写到data里面的,放到setup里面就把获取数据与保存数据放到一起了,
let repositories = []
const getUserRepositories = async () => {
repositories = await fetchUserRepositories(props.user)
} return {
repositories,
getUserRepositories // functions returned behave the same as methods
}
}
// the "rest" of the component
}
ref的作用 与 react hook中的useState很相似
// src/components/UserRepositories.vue `setup` function
import { fetchUserRepositories } from '@/api/repositories'
import { ref } from 'vue' // in our component
setup (props) {
// 注意 ref生成的返回值不是传入的参数,而是放到一个对象的value值里面了,比如下 const number = ref(0) ; 那么number应该是 number = {value: 0},这样做的理由是基本数据类型不支持引用传值
const repositories = ref([])
const getUserRepositories = async () => {
repositories.value = await fetchUserRepositories(props.user)
} return {
repositories,
getUserRepositories
}
}
几点注意事项:
|
最新文章
- jQuery静态方法noop,camelCase,nodeName,trim使用和源码分析
- PHP常用框架
- ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了(转载)
- CSS Reset样式重置
- iOS中文API之NSLayoutconstraint
- postfix
- Windows XP与Windows 7系统常见漏洞
- Communications link failure报错的处理
- Debian8 加载NTFS 磁盘出错 解决方法
- web前端之 HTML介绍
- 利用matlab实现以下功能:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
- 常用Json
- js获取控件位置
- spring boot 之热部署(三)
- java中产生HttpServletRequest等作用域
- linux shell下16进制 “\uxxxx” unicode to UTF-8中文
- cisco常用命令详解
- UIKit 框架之UIView一
- UVa 1220 Hali-Bula的晚会(树的最大独立集)
- pl/sql中误删表中数据并提交恢复办法