ant-design-vue-pro icon indicating copy to clipboard operation
ant-design-vue-pro copied to clipboard

STable在增加额外搜索条件时通过ref刷新是否是一种Bad Practice

Open YAGregor opened this issue 3 years ago • 3 comments

Question (问题描述) 我正在寻求一个Table的封装方式处理一些模板代码

Describe the solution you'd like (你期待的是什么?) 消灭模板代码,在维持代码的拓展性和数据流的清晰度的前提下

Additional context(附加信息) 我注意到STable,它在一定程度上不用手写分页,但是在加入额外条件,比如搜索/筛选框时,它必须使用Ref来刷新(比如例子),我的观点以及Vue的文档隐约表示,如果不是万不得已,不要使用ref,STable在这里得到的便利性对于付出的代价是否是值得的?你们如何看待直接用ref控制子组件的做法?

YAGregor avatar Feb 14 '22 03:02 YAGregor

在 Vue2 中,你能提出更好的用法吗?

sendya avatar Feb 14 '22 14:02 sendya

Vue3 可以依靠封装 Composition API 的灵活性来实现导出 reload 等方法

sendya avatar Feb 14 '22 14:02 sendya

在 Vue2 中,你能提出更好的用法吗?

一个可能的尝试

但是这样不太好控制编辑某个数据之后分页不改变,通过一个是否改变分页的属性传递过去可能也是可行的,从我的观点看,响应式UI编程应该用数据控制组件,如果我尝试这样做的话已经背离了响应式框架的基本套路了,也就是说如果要控制分页行为那么分页的数据理应是在Table的父组件上的,否则分页的细节就应该是不可控的。

用ref导出reload指的是...能给出一个小demo吗 给Table传递一个函数,然后父组件一调用就刷新吗?这样还是没有跳出违反响应式的范式。

我目前还有一个做法是不另外做组件,而是通过一个和组件平行的Object来帮助绘制Table(但也仅仅帮助了省掉了loading的模板代码)。

然而Vue社区似乎并不避讳使用ref(我们之前也一直在这么做),我还有些别的想法,如果你有兴趣的话我可能会给出更多的代码/想法/讨论,或者认为ref是可以被广泛接受的那么我将关掉这个ISSUE。

YAGregor avatar Feb 15 '22 12:02 YAGregor