Ext JS store.load和store.reload区别示例

作者:技术拾光

时间:2026-06-11

浏览:76

ExtJS中Store的reload方法本质调用load,但会复用上一次请求的lastOptions参数,完全忽略新传入参数;而load则接收新配置,处理远程排序等功能,最终通过Proxy发起HTTP请求。

文章目录

有朋友在问,Ext JS中表格Store的load和reload到底有什么区别?其实从源码角度一看就明白:reload方法本质上就是在调用load,只不过它会自动复用上一次请求的参数。

reload的实现原理

来看reload的实现,它会将上一次请求的配置选项(lastOptions)合并后,再次调用load方法。这意味着什么?如果你用reload刷新数据,它不会理会你新传入的参数,而是按照之前的参数来一遍。

Ext JS store.load和store.reload区别示例

复制代码 代码如下:
reload : function(options){ this.load(Ext.applyIf(options||{}, this.lastOptions)); },

load的实现细节

再看看load方法本身,它接收一个配置对象,然后调用storeOptions处理参数。如果开启了远程排序并且有排序信息,还会自动把排序字段和排序方向拼接到请求参数里。最终调用execute方法通过Proxy去发起请求。

复制代码 代码如下:
load : function(options) { options = Ext.apply({}, options); this.storeOptions(options); if(this.sortInfo && this.remoteSort){ var pn = this.paramNames; options.params = Ext.apply({}, options.params); options.params[pn.sort] = this.sortInfo.field; options.params[pn.dir] = this.sortInfo.direction; } try { return this.execute('read', null, options); // <-- null represents rs. No rs for load actions. } catch(e) { this.handleException(e); return false; } },

核心区别与使用建议

store中load和reload的核心区别就一句话:load会带着你传的新参数去请求数据,reload则用上一次的参数再请求一遍。这就好比快递员送快递,如果你重新填了地址,那就是load;如果只是催他再送一次,他拿到的是你上次填的地址,那就是reload。

所以实际开发中,如果需要根据当前条件刷新数据,请用load并传入最新参数;如果只是想重新拉取一遍之前的数据,或者做定时刷新,用reload会更方便。但需要注意,reload会把上次的参数原封不动再提交一次,包括分页信息、筛选条件等。万一你中途改变了排序或者查询条件,但忘了更新参数,直接调用reload就会出现数据对不上的情况。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章