依赖版本:
"vue": "^2.6.11",
"vue-class-component": "^6.3.2",
"vue-property-decorator": "^8.0.0",
"sass": "^1.53.0",
"sass-loader": "^10.2.1",
"typescript": "^3.0.0",
"vue-template-compiler": "^2.6.11"

- 发布:2022-06-28 18:14
- 更新:2022-06-29 10:32
- 阅读:369
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10.0.19043 内部版本 19043
第三方开发者工具版本号: HBuilderX 3.4.15
基础库版本号: 0.0.1
项目创建方式: CLI
CLI版本号: uni-preset-vue-master
示例代码:
操作步骤:
一、首先我注册了一个BaseComponent组件作为我的基类(以下简称基类),它包含一些属性和方法。

二、我注册了一个Index组件它继承至基类,并log了一下基类中的info属性,它成功在控制台中被打印出来"Hello Word"

。现在它一切都是正常的。
三、现在我需要在Index组件中引入子组件(Test),子组件Test是这样的

。然后在Index组件中注册

,最后运行结果

。它现在依然是正常的。
四、以上需求能正常运行,但在开发中不能满足。我期望是所有组件都能继承我的基类,想象一下基类可以作为所有组件的控制器(当然不局限于),还可以做什么?扩展基类! 假设我有一些工具方法很多组件都能使用到,我完全可以创建一个叫UtilsComponent的组件继承至BaseComponent组件(基类),这样的话需要使用工具方法的组件继承UtilsComponent的组件不就可以访问了吗?而且BaseComponent组件(基类)中的信息也可以访问这非常好!不对吗? 可惜我遇到了一个问题,回到刚才第三步,我将Test组件继承至基类

然后HBuilder中编译完全正常

。然后我运行H5

wow!!!完全没问题。我再打开微信小程序

,我靠这什么情况??报错了?? 然后我再将Test组件中的两段代码去掉

然后再看小程序

???又正常了。
我开始跟踪错误...

定位到错误...

怎么会??不应该会出现这个错丫? 这个moduleId参数169应该有的丫 然后我搜索了一下169

我靠怎么只有一个169?? 在搜一下148看看

,对比发现169(基类)压根没被打包到里面!!!! 至此我无解!
五、基于上面的分析,我再一次做了测试。同样更改Test组件中的代码

再查看小程序

这下又正常了。
六、最后总结一下这次的发现(BUG)。我也是测试了很久,找了很多资料,都没有对这方面的答案(也可能是大家很少使用类继承的方式)。这个bug可以简单理解成 A组件它继承了B组件,A组件的子组件C也继承了B组件,那么小程序中会报错!!!
调试:经过系列测试,有一个办法能解决上面问题,那就是将Test组件局部注册改为全局注册

这样做小程序也能正常运行

。但是当项目越来越大,这种方式不可取!!!
写在最后:这个问题纠结我半天了,这是一个瑕疵!!! 有大佬遇到过这个问题且成功解决没有(存在xxx配置...),解决了请联系我
一、首先我注册了一个BaseComponent组件作为我的基类(以下简称基类),它包含一些属性和方法。
二、我注册了一个Index组件它继承至基类,并log了一下基类中的info属性,它成功在控制台中被打印出来"Hello Word"
。现在它一切都是正常的。
三、现在我需要在Index组件中引入子组件(Test),子组件Test是这样的
。然后在Index组件中注册
,最后运行结果
。它现在依然是正常的。
四、以上需求能正常运行,但在开发中不能满足。我期望是所有组件都能继承我的基类,想象一下基类可以作为所有组件的控制器(当然不局限于),还可以做什么?扩展基类! 假设我有一些工具方法很多组件都能使用到,我完全可以创建一个叫UtilsComponent的组件继承至BaseComponent组件(基类),这样的话需要使用工具方法的组件继承UtilsComponent的组件不就可以访问了吗?而且BaseComponent组件(基类)中的信息也可以访问这非常好!不对吗? 可惜我遇到了一个问题,回到刚才第三步,我将Test组件继承至基类
然后HBuilder中编译完全正常
。然后我运行H5
wow!!!完全没问题。我再打开微信小程序
,我靠这什么情况??报错了?? 然后我再将Test组件中的两段代码去掉
然后再看小程序
???又正常了。
我开始跟踪错误...
定位到错误...
怎么会??不应该会出现这个错丫? 这个moduleId参数169应该有的丫 然后我搜索了一下169
我靠怎么只有一个169?? 在搜一下148看看
,对比发现169(基类)压根没被打包到里面!!!! 至此我无解!
五、基于上面的分析,我再一次做了测试。同样更改Test组件中的代码
再查看小程序
这下又正常了。
六、最后总结一下这次的发现(BUG)。我也是测试了很久,找了很多资料,都没有对这方面的答案(也可能是大家很少使用类继承的方式)。这个bug可以简单理解成 A组件它继承了B组件,A组件的子组件C也继承了B组件,那么小程序中会报错!!!
调试:经过系列测试,有一个办法能解决上面问题,那就是将Test组件局部注册改为全局注册
这样做小程序也能正常运行
。但是当项目越来越大,这种方式不可取!!!
写在最后:这个问题纠结我半天了,这是一个瑕疵!!! 有大佬遇到过这个问题且成功解决没有(存在xxx配置...),解决了请联系我
预期结果:
我期望是所有组件都能继承我的基类,想象一下基类可以作为所有组件的控制器(当然不局限于),还可以做什么?扩展基类! 假设我有一些工具方法很多组件都能使用到,我完全可以创建一个叫UtilsComponent的组件继承至BaseComponent组件(基类),这样的话需要使用工具方法的组件继承UtilsComponent的组件不就可以访问了吗?而且BaseComponent组件(基类)中的信息也可以访问这非常好!
我期望是所有组件都能继承我的基类,想象一下基类可以作为所有组件的控制器(当然不局限于),还可以做什么?扩展基类! 假设我有一些工具方法很多组件都能使用到,我完全可以创建一个叫UtilsComponent的组件继承至BaseComponent组件(基类),这样的话需要使用工具方法的组件继承UtilsComponent的组件不就可以访问了吗?而且BaseComponent组件(基类)中的信息也可以访问这非常好!
实际结果:
A组件它继承了B组件,A组件的子组件C也继承了B组件,最终H5正常运行,小程序中会报错!!!
A组件它继承了B组件,A组件的子组件C也继承了B组件,最终H5正常运行,小程序中会报错!!!
bug描述:
简单理解为 A组件它继承了B组件,A组件的子组件C也继承了B组件,最终H5正常运行,小程序中会报错!!!
























