amis icon indicating copy to clipboard operation
amis copied to clipboard

CRUD组件切换分页,数据域取值不正确

Open findreamer opened this issue 1 year ago • 2 comments

描述问题:

使用crud组件,切换分页后,选择第一条数据修改后,后续获取到的数据都不都不正确,

截图或视频:

https://github.com/baidu/amis/assets/116187210/30679bdf-35dc-4c00-8763-bc2cf75cbb87

如何复现(请务必完整填写下面内容):

  1. 你是如何使用 amis 的? npm

  2. amis 版本是什么?请先在最新 beta 版本测试问题是否存在 6.3.0

  3. 粘贴有问题的完整 amis schema 代码: 参考官网链接:switch#change

  4. 操作步骤 1)直接进入第二页、编辑第一条数据,点击switch组件进行修改。 2)修改完成后,然后切换页码进入第一页。 3)然后再切换到除了第一页的其他页,点击switch组件,发现显示的数据域不正确。

findreamer avatar Jun 03 '24 11:06 findreamer

没搞懂是啥意思,切页面是会重新请求接口的,怎么展示跟接口返回有关呢

2betop avatar Jun 18 '24 10:06 2betop

没搞懂是啥意思,切页面是会重新请求接口的,怎么展示跟接口返回有关呢

这个点问题跟切换分页接口返回没关系,主要是切换分页后,去操作switch组件,弹窗里面出现的id和table列表中的id不匹配,这个问题我们在生产上也遇到了。我再详细的描述一下bug的复现步骤:

  1. 进入官网,这个一个在CRUD组件中使用switch组件的用例,直接进入第二页、选择第一条数据,点击switch组件进行修改,此时弹窗出现“确定要修改11吗?”提示文案,符合预期,点击确认完成修改。
  2. 修改完成后,然后切换页码进入第一页,然后选择第6行(非第一行)数据,点击switch组件进行修改,此时弹窗出现“确定要修改16吗?”,这里我选择的是第一页第6行,table中ID列显示的id为6,dialog弹窗中显示的id应该为6才对,而不是16。
  3. 然后再切换到除了第一页的其他页,点击switch组件,发现弹窗显示的id和table列表中的ID列不匹配。

我们在实际运用场景是在switch 的change事件中发送api接口,但是获取不到table真实的rowData.id,而产生bug

findreamer avatar Jun 25 '24 03:06 findreamer

这个跟 表单项的 性能优化逻辑有关,switch 的 name 外其他属性变化,表单项本身不会更新,所以拿到的还是就的。目前可以通过配置给 switch 添加 strictMode: false 避开这个 bug

2betop avatar Jul 16 '24 09:07 2betop