Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

刚升级了 vxe-table. 从2.4.7 到 2.5.1。xeUtils 都是2.2.1。程序报错 _xeUtils.default.browse is not a function #302

Closed
xiaogaofudao opened this issue Aug 30, 2019 · 46 comments
Labels
bug Something isn't working fix has been fix issues not standard The description and title of each issue should be consistent

Comments

@xiaogaofudao
Copy link

刚升级了 vxe-table. 从2.4.7 到 2.5.1。xeUtils 都是2.2.1。程序报错
_xeUtils.default.browse is not a function

@xiaogaofudao xiaogaofudao added the bug Something isn't working label Aug 30, 2019
@xiaogaofudao
Copy link
Author

vxe-table 降级到 2.4.7。可以正常运行。开启 auto-resize 程序报错如下。
Error in mounted hook: "TypeError: this.bindResize is not a function"

@xlz26296
Copy link
Contributor

使用方式看这里 https://github.com/xuliangzhan/vxe-table-demo

@wekerSnail
Copy link
Contributor

image
image
更新2.5.1有遇到类似问题。xe-util有安装

@wekerSnail
Copy link
Contributor

看起来是文件结构改变导致的,安装2.2.1的xe-utils就好了,不过感觉应该需要给一个说明,不然直接安装都会遇到这个问题

@xlz26296
Copy link
Contributor

xlz26296 commented Aug 30, 2019

你应该看更新日志,控制台应该也有提示
image

@xiaogaofudao
Copy link
Author

嗯可以在文档里备注下,非常感谢

@xlz26296
Copy link
Contributor

默认安装方式支持任意版本

import Vue from 'vue'
import 'xe-utils'
import VXETable from 'vxe-table'
import 'vxe-table/lib/index.css'

Vue.use(VXETable)

@wekerSnail
Copy link
Contributor

image
image
不太清楚是什么问题
这是我的配置
image

@xiaogaofudao
Copy link
Author

我的也是这个问题。
vxe-table.js:63 Uncaught TypeError: VXETable.setup is not a function

@xiaogaofudao
Copy link
Author

之前报的错误是没写 import 'xe-utils' 这行。现在加入这行代码。报新错误了

@wekerSnail
Copy link
Contributor

我的问题和你是一致的

@zzxCNCZ
Copy link

zzxCNCZ commented Aug 30, 2019

同样的问题

@thisisonepz
Copy link

如果你们只是用到table 组件的话,可以尝试注释掉这个,然后去入口文件去注册body header 以及table和column

@thisisonepz
Copy link

image
就像这样 然后
image

@xuliangzhan xuliangzhan added the fix has been fix label Aug 30, 2019
@xiaogaofudao
Copy link
Author

@xuliangzhan 经测试可以运行。加入 auto-resize 报错
Error in mounted hook: "TypeError: this.bindResize is not a function"

@zzxCNCZ
Copy link

zzxCNCZ commented Aug 30, 2019

"vxe-table": "^2.5.2",
"vxe-table-plugin-element": "^1.4.2",
"xe-utils": "^2.2.1"
可以正常运行了

@xiaogaofudao
Copy link
Author

刚大概看了下关于 resize 这块的源码。发现是基于 定时器默认 250ms 检测宽度变化。会有一些延迟。
大佬是不是可以考虑 https://www.npmjs.com/package/resize-observer-polyfill 这块做个优化啊,都不支持在考虑 定时器方案

@xiaogaofudao
Copy link
Author

xiaogaofudao commented Aug 30, 2019

@xuliangzhan resize Object.assign 好像没有把 methods 合并到 table methods 里面。造成 this.bindResize 和 this.unbindResize 找不到方法。

mounted () {
    // if (this.autoResize && VXETable._resize) {
    if (this.autoResize && VXETable._resize && this.bindResize) {
        this.bindResize(this, this.$el.parentNode, this.recalculate)
    }
},
beforeDestroy () {
    // if (VXETable._resize) {
    if (this.autoResize && VXETable._resize && this.unbindResize) {
        this.unbindResize(this, this.$el.parentNode)
    }
}

在beforeDestroy 没有判断 this.unbindResize 是否存在。会导致没有开启 auto-resize 直接报错。、
应该和 mounted this.autoResize && VXETable._resize 判断保持一致
建议都加入 方法是否存在判断

@xiaogaofudao
Copy link
Author

目前采用在外部判断父级元素宽度是否变化,调用 recalculate 方法 进行表格宽度布局更新
测试了 resize-observer-polyfill 发现挺好用的

@xiaogaofudao
Copy link
Author

xiaogaofudao commented Aug 30, 2019

刚才发现了一个新的问题,100% 必现。
我的使用情况大概如下:
首先每隔十几秒会调用 loadData 更新表格数据
表格内嵌到 el-tabs 选项卡
当用户切换到其他选项卡,vxe-table 处于隐藏状态。
此时在表格不可见时,并且用户把表格滚动到了 开启虚拟滚动的位置(备注:如果没有滚动数据处于第一条,则不会出现) 如果这个时候调用 loadData 更新数据后,用户切换到 表格选项卡。会出现白屏现象,随便滚动下滚动条恢复正常
目前通过业务规避此Bug。当表格不可见,不执行 loadData 函数

业务避免白屏也会偶现。经排查应该和 vxe-table--body margin-top 计算错误有关系

@xuliangzhan
Copy link
Collaborator

ResizeObserver 只有 Chrome 支持 ,后续版本会支持这个方式,确实非常好

@xiaogaofudao
Copy link
Author

xiaogaofudao commented Aug 30, 2019

额发现了个新问题。。。
之前以为是 2.5.x 版本会出现白屏,然后降级为 2.4.7 测试。补充下白屏的Bug触发原因。
如果 loadData 加载数据后。用户随意滚动下滚动条。组件内部应该记录了滚动位置。如果 loadData 空数组执行清空。组件感觉没有重置滚动条位置。再次 loadData 数据。 marginTop 会直接上次记录缓存的 滚动位置。从而出现白屏。感觉和 元素是否可见,包括高度为零这种出现白屏还不太一样
2.5.x 和 测试 的 2.4.7 都存在此问题。其他版本未测试

<vxe-table
ref="table"
max-height="200"
align="center"
show-overflow
:sync-resize="true"
header-row-class-name="table-header"
highlight-current-row
border
:optimization="{scrollY: {gt: 100, rHeight: 36}}"
@current-change="rowClick"

@xuliangzhan
Copy link
Collaborator

如果有问题请通过重现链接来描述哦

@xiaogaofudao
Copy link
Author

xiaogaofudao commented Aug 31, 2019

复现链接。 chrome 76 100% 必现

https://jsrun.pro/TxbKp/edit

此问题 vxe-table 2.5.8 已修复

@xiaogaofudao
Copy link
Author

白屏Bug 2
https://jsrun.pro/nxbKp/edit

@xiaogaofudao
Copy link
Author

ResizeObserver 只有 Chrome 支持 ,后续版本会支持这个方式,确实非常好
resize-observer-polyfill 可以支持其他现代浏览器,不支持 ResizeObserver 时会自动降级为 MutationObserver 实现。MutationObserver 支持的浏览器比较广基本覆盖了

@yushengling
Copy link

@xiaogaofudao @xuliangzhan 这个BUG完全修复了吗? 目前如果需要使用,ve-utils,vxe-table应该对应的版本是多少

@wekerSnail
Copy link
Contributor

最新的版本

@yushengling
Copy link

image
image
不太清楚是什么问题
这是我的配置
image

你的这个问题解决了吗?现在你的版本号是xe-utils,vxe-table多少版本

@wekerSnail
Copy link
Contributor

最新版本可以使用,或者你使用2.5.0以下的版本(不包括2.5.0)

@yushengling
Copy link

最新的版本

1121513
947 QQ 了解下

@wekerSnail
Copy link
Contributor

按照文档和demo安装配置就可以正常使用的

@yushengling
Copy link

我看下官方最新的是vxe-table2.5.8,xe-utils2.2.2.这个版本是包装没有问题是多么?

@xiaogaofudao
Copy link
Author

xiaogaofudao commented Sep 2, 2019

我看下官方最新的是vxe-table2.5.8,xe-utils2.2.2.这个版本是包装没有问题是多么?

这个版本能用,如果全局导入使用,记得把 babel.config.js 里面按需导入的配置去掉

@yushengling
Copy link

yushengling commented Sep 2, 2019 via email

@yushengling
Copy link

yushengling commented Sep 2, 2019 via email

@xlz26296
Copy link
Contributor

xlz26296 commented Sep 2, 2019

@yushengling 你报错的那个截图很明显就是 2.5.1 的代码,2.5.2以上不会报这个错

@yushengling
Copy link

刚升级了 vxe-table. 从2.4.7 到 2.5.1。xeUtils 都是2.2.1。程序报错
_xeUtils.default.browse is not a function
是出现这个问题
image

@xlz26296
Copy link
Contributor

xlz26296 commented Sep 2, 2019

@yushengling 你上传个空项目看下,信息提供不清楚的话,无法帮你了

参考 https://github.com/xuliangzhan/vxe-table-demo

@xiaogaofudao
Copy link
Author

@yushengling 请确定package.json vxe-table 版本。如果不是最新的。执行 npm update vxe-table 升级。这个报错,确定最新版本已修复

@yushengling
Copy link

@xiaogaofudao 请问最后怎么解决了?
我使用命令行更新了还是报错.也不知道怎么解决.

npm update xe-utils vxe-table

报错:
图片
你的这个我问题解决了吗

@yushengling
Copy link

yushengling commented Sep 3, 2019 via email

@D-or
Copy link

D-or commented Sep 4, 2019

https://github.com/xuliangzhan/vxe-table-demo
image
我按照demo的提示在 import VXETable from 'vxe-table' 之前 导入了 'xe-utils' 包 import VXETable from 'vxe-table' 解决了问题

@xiaogaofudao
Copy link
Author

@xuliangzhan
https://jsrun.pro/nxbKp/edit
这个白屏问题,在框架层好解决么,或者在框架层避开此问题

@xlz26296
Copy link
Contributor

xlz26296 commented Sep 6, 2019

#230

@guaijie
Copy link

guaijie commented Sep 9, 2019

@xuliangzhan
跟新版本后修改,以前修改的样式怎么没了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fix has been fix issues not standard The description and title of each issue should be consistent
Projects
None yet
Development

No branches or pull requests

9 participants