Vue3 生产环境 instance.ctx 值问题

来源:1-1 课程简介

慕哥6812482

2020-12-02

Vue3 版本 3.0.0

以下是vue-cli 初始化的 3.0.0 版本 测试结果

1.测试内容(打印instance)

图片描述

2.测试结果(开发环境)

图片描述

3.测试结果(生产环境)

图片描述

4.ctx赋值源码部分

图片描述

5.问题分析

这样的差异就会导致一些问题:

  • 比如我全局赋值$message,开发环境下是可以通过instance.ctx. $message拿到,但是生产环境下createRenderContext方法没有走,所以拿不到。
    图片描述
  • 还有就是像上面开发测试打印的 ctx结果里,$nextTick等属性也获取不到了

vue为何这样设计呢?

写回答

2回答

ustbhuangyi

2020-12-05

https://v3.vuejs.org/api/composition-api.html#getcurrentinstance

//img.mukewang.com/szimg/5fca623e09afb45b15980718.jpg

Vue3 的设计可能更希望你通过这种方式去访问全局配置上定义的方法吧,另外 nextTick 也是单独暴露的 API,如果用 composition API 通常都是 import { nextTick } from 'vue'

0
1
慕哥6812482
非常感谢!
2020-12-07
共1条回复

ustbhuangyi

2020-12-04

//img.mukewang.com/szimg/5fc9189d0902e83122680688.jpg

我看到的版本是这样的,另外 ctx 在生产环境下也能获取到 instance 上的所有属性啊,你说的哪些属性无法获取?

0
1
慕哥6812482
之前描述的可能不清楚,我重新编辑了下,老师您再瞅瞅?
2020-12-04
共1条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4986 学习 · 1038 问题

查看课程