Subscribe on changes!

Monitoring failure of watch props after packaging

avatar
Feb 21st 2022

Version

3.2.31

Reproduction link

layui-vue.gitee.io

Steps to reproduce

我们封装了一个全局配置组件,通过监听 props 传递的属性,来做一些操作,实现主题变量的覆盖 与 国际化的切换

https://github.com/layui-vue/layui-vue/blob/develop/src/provider/index.vue

What is expected?

预期结果是更新属性值时,内部 watch 监听到相关的属性变动,去调用 changeTheme 和 changeLocale 方法,来完成主题变更 与 语言切换,在开发环境时是可行的,见 [ https://github.com/layui-vue/layui-vue/blob/develop/example/src/layouts/Layout.vue ]

What is actually happening?

但当发布之后,作为依赖包时,使用该组件,watch 监听无法正常监听 props 变化 ,见 [https://github.com/layui-vue/layui-vue-admin/blob/master/src/layouts/BaseLayout.vue ]

avatar
Feb 21st 2022

你需要提供一个简单可复现的 demo。你的工程太复杂了,不利于排查问题。

avatar
Feb 21st 2022

你需要提供一个简单可复现的 demo。你的工程太复杂了,不利于排查问题。

复现地址

组件源码

avatar
Feb 21st 2022

image 构建产物里并没有找到 changeThemeVariable。而且lay-config-provider中也没有相关的逻辑。🤔

avatar
Feb 21st 2022

image 构建产物里并没有找到 changeThemeVariable。而且lay-config-provider中也没有相关的逻辑。🤔

0.3.7 版本中是没有的,在 0.3.8-alpha.7 版本新增该特性, 可以通过沙盒顶部的操作切换到指定版本

avatar
Feb 21st 2022

打开 https://cdn.jsdelivr.net/npm/@layui/layui-vue@latest/lib/index.js 跟打开 https://cdn.jsdelivr.net/npm/@layui/layui-vue@0.3.8-alpha.8/lib/index.js 看到的产物是不一样的。

@latest 中不包含切换主题的代码 @0.3.8-alpha.8 中包含切换主题的代码。 但切换版本,指向的是@latest

avatar
Feb 21st 2022

这也许是沙盒的问题,但不影响最终结果,本地拉包依旧存在这个问题

avatar
Feb 21st 2022

稍后我在 sandbox 上提供准确版本的复现案例

avatar
Feb 21st 2022

image

该代码改动解决了我的问题,runtime 时没问题,打包编译之后就会产生上述问题