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. C#3.0-新增加功能浅析(1)
  2. CTreeCtrl 控件实现多选并取得选中项
  3. OpenStack-MitakaCentos7.2双节点搭建--(六)Dashboard服务
  4. Oracle数据库的下载和安装
  5. mattermost
  6. 如何删除写保护的文件_如何找回已删除或永久删除的Office Excel文件
  7. lamp/lnmp开启 PATHINFO
  8. 开源 展uv_消费电子展上的开源,印度被封锁的网站等等
  9. 为什么“how to say”是错的?
  10. php js绝对路径,javascript将相对路径转绝对路径示例_基础知识
  11. c语言 strupr,C语言 strupr()用法及代码示例
  12. Java测试代码及原理
  13. dubbo+zookeeper+dubboadmin环境搭建
  14. 基于SSH的医药管理系统
  15. STM单片机命名规则
  16. 计算机专业的学生也太太太太太惨了吧?
  17. Insecure CAPTCHA(不安全的验证码)
  18. 手机图形计算器matlab,图形计算器Mathlab pro版
  19. Python爬虫抓取链家二手房数据
  20. 父子组件间传值,父传子,子传父

热门文章

  1. android studio 调试问题解决记录
  2. 《麦肯锡意识》前言 解决问题的战略模型-思维导图
  3. 《第31天:JQuery - 轮播图》
  4. PDF格式人工转为Excel
  5. Python中Hash值计算的学习笔记
  6. MUI tabbar购物车小图标的制作
  7. 速览 NFT 期权赛道代表项目与发展前景
  8. 10 竞争神经网络与SOM神经网络matlab参考程序
  9. python爬取旅游信息_Python 爬取 13 个旅游城市,告诉你五一大家最爱去哪玩?
  10. selenium被检测