element-plus [Component] [table] table表格组件,渲染数据后,通过Ref设置自定义过滤,再次变更数据源,过滤条件失效

osh3o9ms  于 2个月前  发布在  其他
关注(0)|答案(8)|浏览(30)

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

  • el-table

Docs

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的业务设置

Additional comments

3okqufwl

3okqufwl1#

麻烦提供一个复现链接

csbfibhn

csbfibhn2#

link
步骤:1.开始渲染全部数据 ->2.3s后渲染筛选数据 ->3. 6s后改变数据,又重新渲染了全部数据,导致过滤数据失效
@kamesan012

vohkndzv

vohkndzv3#

我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。
doc

iswrvxsc

iswrvxsc4#

我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。 doc

大哥,我做自定义filter样式,我又不想在在外层改变data,如果filters支持我的需求,我也不至于看源码,用这种方案。
先不提需求的问题,聪代码设计的角度这里也有问题呀

g52tjvyc

g52tjvyc5#

我的理解是如果只是过滤数据不应该使用这种方式,filter-method一般还是做为表格列的属性配合filters使用。 doc

大哥,我做自定义filter样式,我又不想在在外层改变data,如果filters支持我的需求,我也不至于看源码,用这种方案。 先不提需求的问题,聪代码设计的角度这里也有问题呀

这个方案本身是不适合的,是什么原因让你不选择从外层改变data做filter

k4emjkb1

k4emjkb16#

那我要重新实现下element-plus,这不是代码重复了吗?
引用层datas ---->封装层Datas------>element-plus datas
增加了一层结构,复杂度就会提升一倍.
另外我想知道,方案为什么不太适合,此举就是table-filter自定义能力比较差

qncylg1j

qncylg1j7#

那我要重新实现下element-plus,这不是代码重复了吗? 引用层datas ---->封装层Datas------>element-plus datas 增加了一层结构,复杂度就会提升一倍. 另外我想知道,方案为什么不太适合,此举就是table-filter自定义能力比较差

这样实现就行
example

ve7v8dk2

ve7v8dk28#

这里只是个例子,实际情况filters非常复杂并且支持可扩展,你觉得放在data合适吗?

相关问题