Bug Type: Component
Environment
- Vue Version:
3.3.4
- Element Plus Version:
2.3.12
- Browser / OS:
Chrome 116.0.5845.96
- Build Tool:
Vite
Reproduction
Related Component
el-table
Reproduction Link
Steps to reproduce
1.渲染表格
2.设置自定义过滤
3.修改表格数据(触发以下程序)
1.packages/components/table/src/store/index.ts->setData->execQuery->execFilter->execSort这里会修改data值
2.packages/components/table/src/store/helper.ts->proxyTableProps这里的watch会,覆盖程序1中的data值,导致过滤失败
4.出现了自定义过滤失效
What is Expected?
期望去除proxyTableProps中data值修改
What is actually happening?
proxyTableProps中data值修改和store中setData重复,导致覆盖了store中setData的业务设置
8条答案
按热度按时间3okqufwl1#
麻烦提供一个复现链接
csbfibhn2#
link
步骤:1.开始渲染全部数据 ->2.3s后渲染筛选数据 ->3. 6s后改变数据,又重新渲染了全部数据,导致过滤数据失效
@kamesan012
vohkndzv3#
我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。
doc
iswrvxsc4#
我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。 doc
大哥,我做自定义filter样式,我又不想在在外层改变data,如果filters支持我的需求,我也不至于看源码,用这种方案。
先不提需求的问题,聪代码设计的角度这里也有问题呀
g52tjvyc5#
我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。 doc
大哥,我做自定义filter样式,我又不想在在外层改变data,如果filters支持我的需求,我也不至于看源码,用这种方案。 先不提需求的问题,聪代码设计的角度这里也有问题呀
这个方案本身是不适合的,是什么原因让你不选择从外层改变data做filter
k4emjkb16#
那我要重新实现下element-plus,这不是代码重复了吗?
引用层datas ---->封装层Datas------>element-plus datas
增加了一层结构,复杂度就会提升一倍.
另外我想知道,方案为什么不太适合,此举就是table-filter自定义能力比较差
qncylg1j7#
那我要重新实现下element-plus,这不是代码重复了吗? 引用层datas ---->封装层Datas------>element-plus datas 增加了一层结构,复杂度就会提升一倍. 另外我想知道,方案为什么不太适合,此举就是table-filter自定义能力比较差
这样实现就行
example
ve7v8dk28#
这里只是个例子,实际情况filters非常复杂并且支持可扩展,你觉得放在data合适吗?