范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

vue3。x新特性之setup函数,看完就会用了

  最近有小伙伴跟我聊起setup函数,因为习惯了vue2.x的写法导致了,setup用起来觉得奇奇怪怪的,在一些api混编的情况下,代码变得更加混乱了,个人觉得在工程化思想比较强的团队中使用setup确实能更好的使用模块化开发,但是用得不好的话也确实降低了代码的可读性。本篇文章是从使用角度来聊聊setup的实际使用。 setup 使用
  1、setup和以前的api(data,methods,computed等)并不冲突,也是可以相互访问的,值得注意的是setup里面不能用this,并且在setup执行的时候组件实例还未创建完毕,故不也能使用data,methods,computed定义的变量和函数。如下混编示例: import { getCurrentInstance} from "vue"  setup() {   const count = 10; // 非响应式的。    const { proxy } = getCurrentInstance(); // 这里 proxy 相当于this   console.log(proxy.msg) // 不能在setup调用时访问data里面的属性    return {     count,     consoleMsg: () => {       console.log(proxy.msg) // 123,点击按钮时可以访问了     }   } }, data() {   return {     msg: "123"   } }, created() {   console.log(this.count) // 10,这时可以访问setup抛出的属性了。 }
  2、setup 还可以返回一个渲染函数,不过返回一个渲染函数将阻止我们返回任何其它的东西,当我们想暴漏函数给其父组件使用的时候,可以使用expose来处理这个问题。示例如下: import { h, ref } from "vue"  export default {   setup(props, { expose }) {     const count = ref(0) // 创建一个响应式的变量     const increment = () => ++count.value      expose({       increment     })      return () => h("p", count.value) // 请注意这里我们需要显式使用 ref 的 value   } }
  看到这里就完全可以使用setup来做项目了,接下来就是封山开路遇水搭桥,碰到不会的就各种查,磕磕碰碰总能成功。然而一篇帖子不能写到这里就结束了,后面还有一大堆相关的知识点呢。 响应式
  为什么聊响应式呢,因为setup里面返回的变量虽然可以直接在模版语法中使用,但是它并不是响应式的,如上面第一个示例,我们如果在模版中使用了{{ count }}来展示count的值,然后我们改变count的值,值改变了,但是显示不会变化。 // 非响应式示例,等价于错误示例,请尽量不要复制这块代码到你项目中去了。 
  响应式这块在官网api比较多,只说几个用得比较多的。
  1、上面有提到的ref,ref 接收参数并将其包裹在一个带有 value property 的对象中返回,然后可以使用该 property 访问或更改响应式变量的值。最简单的例子,上面示例改成响应式的,如下: 
  2、reactive返回对象的响应式副本。这个比较好理解,跟以前2.x时代差别不大。 
  3、toRef 和 toRefs 这两个函数都是为了获取一个响应式的子项,并且跟以前的响应式数据进行关联 
  注意 :toRefs 只会为源对象中包含的 property 生成 ref。如果要为特定的 property 创建 ref,则应当使用toRef,简单粗暴的理解toRef可以给源对象添加一个关联的响应式属性,如:(本想写在上面示例中,不过感觉不清晰,就单独列了一块伪代码) const countObj = reactive({ count: 10 }); const testV = toRef(countObj, "test");  testV.value = 10; console.log(countObj.test); // 10setup 参数
  使用  setup   函数时,它将接收两个参数:
  Props
  setup   函数中的第一个参数是 props  。正如在一个标准组件中所期望的那样,setup   函数中的 props   是响应式的,当传入新的 prop 时,它将被更新。export default {   props: {     title: String   },   setup(props) {     console.log(props.title)   } }
  但是,因为  props   是响应式的,你不能使用 ES6 解构,它会消除 prop 的响应性,上面说到的toRefs可以很好的解决这个问题。import { toRefs } from "vue"  setup(props) {   const { title } = toRefs(props)   console.log(title.value) }
  如果  title   是可选的 prop,则传入的 props   中可能没有 title   。在这种情况下,toRefs   将不会为 title   创建一个 ref 。你需要使用 toRef   替代它:import { toRef } from "vue" setup(props) {   const title = toRef(props, "title")   console.log(title.value) }
  Context
  传递给  setup   函数的第二个参数是 context  。context   是一个普通 JavaScript 对象,暴露了其它可能在 setup   中有用的值:export default {   setup(props, context) {     // Attribute (非响应式对象,等同于 $attrs)     console.log(context.attrs)      // 插槽 (非响应式对象,等同于 $slots)     console.log(context.slots)      // 触发事件 (方法,等同于 $emit)     console.log(context.emit)      // 暴露公共 property (函数)     console.log(context.expose)   } }setup生命周期钩子
  在setup中可以访问到以下生命周期钩子: onBeforeMount onMounted onBeforeUpdate onUpdated onBeforeUnmount onUnmounted onErrorCaptured onRenderTracked onRenderTriggered onActivated onDeactivated
  这些函数接受一个回调函数,当钩子被组件调用时将会被执行,如: export default {   setup() {     // mounted     onMounted(() => {       console.log("Component is mounted!")     })   } }
  原创不易,转载请注明出处,欢迎留言提议。

RealmeGTneo3150W闪充,天玑8100,千元机皇上个月的数码圈可谓是非常热闹了,各大手机厂商都发布了不少新机,而且性价比还一个比一个高,今天我们要说的就是RealmeGTneo3。外观方面中规中矩,后置摄像头采用三角形排列,正面以太坊创始人谈Terra崩盘算法稳定纯属胡扯以太坊联合创始人维塔利克布特林(VitalikButerin)对上周TerraLUNAUSD及其算法稳定币崩溃的灾难发表了看法。在周六的一条推特中,以太坊教育者安东尼萨萨诺(Ant从算法工程师到发电厂锅炉工,互联网大牛为何进厂搬砖我们的人工智能技术和能力放在互联网行业做的是锦上添花的事,但在制造业做的可能是雪中送炭的事情。这是人工智能博士刘枢对于自己从互联网切换到智能制造赛道的总结。作出同样选择的还有90后Excel向左查询数据,这2组函数轻松搞定,比vlookup更高效数据查询匹配,相信多数人都会立刻想到一个函数,那就是vlookup函数,vlookup函数在Excel函数中是一个使用频率非常高的查询类函数。但vlookup函数实操中也有自己的弱经济日报携手京东发布数据人们在读什么书来源经济日报数据来源京东消费及产业发展研究院图书消费的文化标签图书在传承文明提高国民素质推动经济社会发展等方面始终发挥着重要作用。近年来,纸质书电子书的线上销售持续增长,阅读通过数荣耀9X推送鸿蒙2。0更新,看来荣耀才是亲儿子啊!丨欧界欧界报道近期鼎桥M40上线了,一时间也是引发热议。这台手机之所以能有那么大的流量,多少还是沾了华为的光。毕竟和华为Mate40几乎一样的外壳,金属中框加玻璃后盖设计高级感十足,后置电量顶呱呱,红米5500mAh大电池旗舰诞生,价格也厚道红米这个品牌的K系列旗舰机之所以在这两三年以来更加畅销,主要因为保持了低价格,但在核心的处理器电池快充以及影像屏幕这些方面从来不差,也就是说K系列做到了顶尖配置超低价格,换新用户都iQOOZ6量产强悍双芯6000mAh大电池上阵,坐稳千元机皇之位经过这几年的全面爆发后,vivo的子品牌iQOO无论是在外观设计硬核配置,还在影像实力上都有着极高的口碑,尤其是游戏使用体验确实很不错,即便是与专业的电竞品牌红魔黑鲨相比也并不弱。小米12S强悍配置曝光,小米12沦为百元机,一夜改写发烧史据工信部5月16日消息,型号为2206123SC(L3S)和2206122SC(L2S)的小米设备已获准无线电,即将上市。除了之前的2207122MC(L2M),小米12S家族似乎2021年了苹果iPhone11跟苹果iPhoneXSxsmax单年的机煌改怎么选择没有错,2021年了,我现在呢,还是要拿两三年前的机器来做对比,不是我吹这个iPhone手机,二手机里面的iPhone是真的强,无论是主力机还是备用机,你就说三四年前的一款安卓机,降价1300元,智能高刷屏幕骁龙888,OPPO手机性价比超小米众多手机品牌都会选择向各个方面的手机产品发展,不管是高端旗舰定位的手机产品还是中低端的性价比产品等等,都进行了各个方面的努力。以性价比为特点的中端手机为例,小米,OPPO,vivo
算法不扎实的程序员,每一个都很慌我想学编程,我该学什么语言?听说最近Python最火Java用的最多,我该学哪个?初学者经常问这样的问题,然而这些其实是错误的问题。对于初学者而言,你最应该优先考虑的是,哪些东西构AMD高管石墨烯将在10年后取代硅成3nm工艺CPU材质近日,AMD数据中心高级副总裁ForrestNorrod近日在RiceOilandGasHPC大会上表示,未来10年,硅仍然是CPU最好的朋友。具体来说,ForrestNorrod被曝光的蛋壳公寓到底是什么妖魔鬼怪?资本真的可以草菅人命?蛋壳公寓起家2015年,经过4年不到的扩张,已经在北京上海杭州等一二线城市全面铺开来。发展速度让传统的链家58赶集等平台自叹不如。在各大城市阔气的拿房源,垄断市场,高炮广告,雇佣写云端市场激战正酣混合云成未来方向互联网提出已有数年。如今的中国,互联网与传统产业结合的道路越走越宽。作为互联网基础设施的云计算产业同样得到蓬勃发展。今年两会期间,包括腾讯公司首席执行官马化腾浪潮集团董事长孙丕恕等全球新增9条晶圆生产线,5条来自中国,网友发达国家粉碎机!半导体材料虽然近几年中国在很多领域都取得了不错的成就,但在一些基础行业上,我们相比美国等发达国家还有着非常巨大的差距,而半导体领域就是其中之一。由于我们相关领域起步较晚,在半导体等半导体军火龙头CEO合作是不二法门,看好存储行业长期需求美商半导体设备龙头应用材料(AppliedMaterials)首席执行官GaryDickerson在紧凑满档的全球会议中,专程参与此次在上海举行的SEMICONChina2019。荷兰跨境电商平台Bol。com怎么样,如何创建账户?2017年,荷兰的电子商务行业价值超过220亿欧元,比去年增长了13。同年在比利时,电子商务价值超过100亿欧元。事实上,比利时17的支出用于在线支出。换句话说,荷兰和比利时的市场手机10倍变焦那么清晰?OPPO新机Reno样张太优秀遭网友质疑最近一段时间OPPO即将在下个月要发布的新机OPPOReno刷爆了各大社交平台。作为首款搭载10倍混合光学变焦的机型,OPPOReno多张高倍变焦的样张流出后更让不少之前已经关心这无法访问!淘宝突现大范围故障网友一片哀嚎3月20日下午消息,全国多地网友在微博上反馈,淘宝AppPC版网页出现无法访问,打开淘宝App,页面显示,网络竟然崩溃了,疑似服务器出现大范围故障。有网友表示,以为网络问题,WiF这三款神器要是不火,天理难容啊!支持6大平台无损音乐下载鱼声音乐无损付费音乐下载神器(Windows)今天会给大家推送三款付费音乐免费下载神器,第一款叫做鱼声音乐,适用于Windows系统,支持免费下载网易云音乐,虾米音乐,腾讯音乐,酷支付宝强行送出大礼不得拒收!网友你们难道不盈利吗?继前年上海宗先生喜获支付宝全勤大礼包花呗终身红包后,今天支付宝再次送出全勤大奖1265颗真鸡蛋并不得拒收。在实力宠粉方面,支付宝真的一直都很任性!在支付宝这里,运气好可以中奖,靠着