为什么需要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
}
}

几点注意事项:

  • setup(props, {...}) ; props不能用解构的方式获取里面的值,这样就丢失掉 props属性值的自动响应能力
  • 如果需要props的解构能力可以用 toRefs(props)来实现
  • 如果ref生成的值,在template中使用的时候不要用value属性,直接使用比如 const foo = ref(0); 在template中 <span>{{foo}}</span>不需要写foo.value

Vue3学习笔记的更多相关文章

  1. vue3 学习笔记 (二)——axios 的使用有变化吗?

    本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期.router .vu ...

  2. vue3 学习笔记 (四)——vue3 setup() 高级用法

    本篇文章干货较多,建议收藏! 从 vue2 升级到 vue3,vue3 是可以兼容 vue2 的,所以 vue3 可以采用 vue2 的选项式API.由于选项式API一个变量存在于多处,如果出现问题时 ...

  3. vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽

    刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...

  4. vue3 学习笔记 (五)——vue3 的 setup 如何实现响应式功能?

    setup 是用来写组合式 api ,内部的数据和方法需要通过 return 之后,模板才能使用.在之前 vue2 中,data 返回的数据,可以直接进行双向绑定使用,如果我们把 setup 中数据类 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  7. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  8. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  9. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  10. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. 学编程很盲目?不会代码?你可以来瞧瞧这本。是一本难得的Python 入门手册。

    Python语言及其应用,pdf高清免费下载地址 获取码:d414 内容简介  · · · · · · 本书介绍Python 语言的基础知识及其在各个领域的具体应用,基于最新版本3.x.书中首先介绍了 ...

  2. Vue 权限控制 使用自定义指令 代替v-if

    参考了vue-element-admin 指令库的permission 使用Demo(demo.vue) <template> <p>admin组:<span v-per ...

  3. JavaScrip核心基础(讲师李立超)

    01_入门 01_HelloWorld <!-- JS代码需要编写到script中 --> <script> alert("哈哈哈哈") console.l ...

  4. SAP 采购订单行项目客制化字段增强

    需求: 在采购订单行项目中新增客制化字段,区分采购的项目中的物料是量产还是研发物料 开发步骤 主要使用二代增强出口:MM06E005 创建增强项目 事务码T-code:CMOD 创建项目ZEMM001 ...

  5. LP1-4:功能图分析方法(白盒测试)

  6. 用js实现元素两个元素位置对齐

    一.问题描述 使得填表单位那一行字与下面的表格左对齐,对表格使用css中的margin:auto实现了居中,但是对那一行字(用div包裹的)使用margin:auto不生效:并且2021年下面对应的月 ...

  7. winform 中 label透明化

    label1.BackColor = Color.Transparent;//设置背景颜色为透明 label1.Parent = pictureBox1;//将pictureBox1设为标签的父控件, ...

  8. Newtonsoft.Json高级用法--转载至 焰尾迭 随笔

    本人只做搬运工,以这方便自己学习的态度!以下内容均为拷贝! 如有不适请联系本人! 本文原作者:焰尾迭 本文地址:http://www.cnblogs.com/yanweidie/p/4605212.h ...

  9. 推荐一个json直接导出Excel的网站

    https://wejson.cn/json2excel/

  10. C# 生成二维码方法(QRCoder)

    前言 二维码很多地方都有使用到.如果是静态的二维码还是比较好处理的,通过在线工具就可以直接生成一张二维码图片,比如:草料二维码. 但有的时候是需要动态生成的(根据动态数据生成),这个使用在线就工具就无 ...