setup

  • setup
  • setup总结
  • ref()函数 -- 实现响应式
    • ref()小结
  • reactive函数处理对象(包括数组)
    • reactive小结
  • vue2/3响应式原理
    • vue2存在问题, 提供的修改方式
  • vue3解决了以上问题
    • window.proxy 浏览器内置构造函数
    • vue3响应原理
  • vue3响应原理总结
  • reactive与ref区别/使用
  • setup的两个注意点 -- 参数
  • setup只有两个参数
    • 第一个props,
    • 第二个context
    • (用props同级对象)emits接收父组件传递的事件
    • emit触发事件
  • $attrs
  • $slots

setup

setup是个函数, 包含数据、方法等,是组合api的“舞台”。
setup返回值:
1.对象,其中的属性、方法都可以在模板中直接使用

2.渲染含数(了解就好)

export default {name: "App",components: {},setup() {// 非响应式变量let name = "欧西里斯";let age = 18;function sayHello() {alert(`Hello,I'm ${name}`);}return {name,age,sayHello,};},
};

setup和data(), methods,vue3兼容vue2.

setup总结

async 修饰的函数返回值被Promise包裹住
async 与 await 配合

ref()函数 – 实现响应式

返回引用对象(ref对象), 可以动态渲染页面

    let age = ref(18);let obj = ref({type: "前端工程师",salary: "10k",});

使用:
1.js中使用时用 对象.value 读取或修改数据

      age.value = 14;obj.value.type = "后端工程师", obj.value.salary = "10000k";

2.在模板中, 用插值语法, RefImpl对象可以自动读取value属性的值

// ref的参数是对象,type是参数对象的属性<h2>职业:{{ obj.type }}</h2>// ref的参数不是对象<h2>年龄:{{ age }}</h2>

ref依旧可以作为唯一标识获取元素对象

返回值是一个对象

RefImpl
ref: reference
impl: implement

ref()小结

reactive函数处理对象(包括数组)

深层次响应,也就是说多次对象嵌套属性也会满足响应式
数组可以用索引改(响应式)

<template>
<!-- 4.渲染 --><h1>个人信息</h1><h2>姓名:{{ person.name }}</h2><h2>年龄:{{ person.age }}</h2><h2>职业:{{ person.obj.type }}</h2><h2>工资:{{ person.obj.salary }}</h2><h2>爱好:{{ person.hobby }}</h2><button @click="sayHello">问好</button><button @click="changeInfo">修改信息</button>
</template><script>
// 1.引入
import { reactive } from "vue";
export default {name: "App",components: {},setup() {// 数据// 2.使用let person = reactive({name: "欧西里斯",age: 18,obj: {type: "前端工程师",salary: "10k",},hobby: ["抽烟", "喝酒", "烫头"],});// 方法// 3.修改function sayHello() {alert(`Hello,I'm ${person.name}`);}function changeInfo() {person.name = "李四";person.age = 14;// console.log(obj);(person.obj.type = "后端工程师"), (person.obj.salary = "10000k");// console.log(name, age);person.hobby[0] = "学习";}return {person,sayHello,changeInfo,};},
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

reactive小结

vue2/3响应式原理

vue2存在问题, 提供的修改方式


vue3解决了以上问题

添加对象属性: 对象.新属性
删除对象属性: delete 对象.新属性

原因: reactive处理对象,变成响应式对象, 使用了ES6新属性proxy

window.proxy 浏览器内置构造函数

window.proxy修改源数据

vue3响应原理

es6新属性 Reflect 增(defineProperty)删(deleteProperty)改(set)查(get)
Reflect返回值
成功true
失败false

vue3响应原理总结

reactive与ref区别/使用


数据可以用data对象
data对象内有n个对象

setup的两个注意点 – 参数

setup只有两个参数

第一个props,

1.用props接收,以参数形式放入setup内
setup内的props是Proxy代理对象形式

import { reactive } from "vue";
export default {name: "HelloWorld",// 1.接收props: ["msg"],// 2.参数1(Proxy对象形式)setup(props) {// 3.使用console.log("props:", props.msg);let person = reactive({name: "欧西里斯",hobby: ["抽烟", "喝酒", "烫头"],});return {person,};},
};

第二个context

(用props同级对象)emits接收父组件传递的事件

和props一样的用法, 但是不写也可以用
emits接收父组件传递过来的自定义事件.

emit触发事件

context.emit(‘事件’,参数)

$attrs

父组件传参, 子组件没接收, 数据存在子组件的$attrs属性内

$slots

父组件将html内容传递给子组件, 子组件没用slot(插槽)接收, 数据存在子组件的 $slots属性 内

前端之vue3的setup和setup的2个的形参、响应式页面相关推荐

  1. 显示外部页面_前端设计-响应式页面开发基础

    随着终端设备类型的丰富,设备尺寸的型号也越来越多,如果实现前端页面在不同终端设备中,按照设备的尺寸型号进行自动布局,保证良好的人际交互体验效果,已经成为网页前端设计所需要考虑的问题,当前支持响应式开发 ...

  2. bootstrap设计登录页面_前端小白如何在10分钟内打造一个爆款Web响应式登录界面?...

    对于前端小白(例如:专注后端代码N年的攻城狮),自己编写一个漂亮的Web登录页面似乎在设计上有些捉襟见肘,不懂UI设计,颜色搭配极度的混乱(主色,辅助色,配色,色彩渐变,动画效果等等,看起来一堆乱七八 ...

  3. 【前端实例代码】如何使用 HTML 和 CSS 快速创建一个响应式导航栏

    效果图: 大屏: 小屏: bilibili在线视频演示地址: [前端实例代码]如何使用 HTML 和 CSS 快速创建一个响应式导航栏nav_哔哩哔哩_bilibili完整代码在这里:https:// ...

  4. vue3中对对象增添属性也会加入到响应式

    我们先来看看看vue2版本:  vue2版本中对一个对象增添属性不会有响应式,需要通过set方法来进行控制,比如一下 点击  点击岁数按钮时,岁数不会显示到页面中去. 再来看看vue3版本: 这时点击 ...

  5. web前端开发技术 作期末大作业成品:健身网站 bootstarp 响应式 4页 带汉堡菜单

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 校园篮球网页设计 | 足球体育运动 | 体育游泳运动 | 兵乓 ...

  6. 前端开发工程师 - 04.页面架构 - CSS Reset 布局解决方案 响应式 页面优化 规范与模块化...

    04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 课堂交流区 水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? & ...

  7. 在 react 里写 vue3 ? 还写了自定义 hooks和 Hoc 构建了响应式 !

    作者 | 

  8. 前端基础7:a标签常用方法和元素居中方式,响应式@media

    a标签 a标签作用 锚点 语法:href="#+指定位置" a标签href属性的属性值为相应要跳转到的元素id属性名前加# <a href="#top"& ...

  9. web前端期末大作业:基于HTML+CSS+JavaScript奥迪企业bootstrap响应式网站

最新文章

  1. Android之布局RelativeLayout
  2. 数据库:数据库死机和掉电时如何让恢复数据
  3. 溢出键盘程序漏洞 得到管理员权限
  4. 会场安排问题 http://acm.nyist.net/JudgeOnline/problem.php?pid=14
  5. 送30块树莓派PICO 开发板!
  6. Python之模块与包(下)
  7. python 等值线图_python – matplotlib等值线图:对数刻度的比例色度级
  8. 树莓派3B+ (PPOE+hostapd)变身无线路由器
  9. 基于深度学习的单目图像深度估计
  10. 人工智能电力行业应用,人工智能的需求分析
  11. 火狐浏览器丢失书签,恢复无法处理备份文件的解决方案
  12. 上海车牌拍卖服务器响应时间,上海拍牌技巧:”48秒+700” 最晚出价为55秒
  13. ZOJ - 3939
  14. 带宽与码元的关系_比特率与带宽什么关系
  15. python 判断两个列表间是否具有包含关系以及获取子列表在父列表中的索引
  16. 加密ic 及 aes256 加密app
  17. 影响网站收录的几个因素
  18. 软件加密系统Themida应用程序保护指南(七):外挂插件
  19. 苹果手机微信语音没声音怎么回事_iphonexs没声音,iphonexs扬声器没声怎么回事?...
  20. 万国觉醒迁服务器显示该王国还未开放,万国觉醒怎么迁城到联盟其他王国

热门文章

  1. ubuntu 20.04 自带输入法
  2. Snell法则的推导
  3. (void (*Visit)(const ElemType ))
  4. 阿里云ECS通用型g7云服务器支持vTPM第三代神龙架构性能评测
  5. Python-easygui模块之插入图片
  6. Python数据分析第七课:时间序列数据的处理
  7. 我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们
  8. AI遮天传 ML-SVM
  9. MindManager Mac苹果版本教程激活码序列号秘钥下载详情
  10. 互联网行业遇寒,转行IT该如何应对?这四点建议你一定要知道!