20 条回复  ·  318 次点击
veveue 小成 2024-5-14 13:16:47
这就要看 modal 获取数据的逻辑怎么写的了
cydian 小成 2024-5-14 13:45:59
swr
ColdBird 小成 2024-5-14 14:04:29
整个组件包一下不就得了,按你说的只对 modal 做操作那不是简单的很,不至于上升到对全部 Antd 组件的处理。
* 方案 1:props 里只传 data ,这样内部不关心 data 的变更,外层 refresh 之后自己请求数据,内层更新 UI
* 方案 2:props 里传 onLoad 作为加载回调、payload 作为触发器,监听 payload 的变化调用 onLoad 请求数据,再这个基础上抽象一下,不难实现
kinghly 初学 2024-5-14 14:22:36
最简单就是关闭时销毁 modal
vanchKong 小成 2024-5-14 14:36:28
写个组件,传入刷新方法就行了呗
Mexion 小成 2024-5-14 14:38:30
Modal 的内容不是你自己传进去的吗,你自己搞个有刷新按钮的高阶组件,需要刷新的组件套进去就行了
gaoxiu 小成 2024-5-14 14:43:07
@790002517zzy #20 意思是 只需要刷新 Modal 内的组件?那么这个组件的数据是自治的吧?是的话就挺简单的:
1. 用 Modal 的 closeIcon 重新定义关闭图标,借用这个 api 添加一个刷新按钮(记得阻止刷新按钮的冒泡事件)
2. 需要刷新的子组件添加 key 属性,每次刷新的时候更新这个 key
theohateonion 初学 2024-5-14 15:00:30
噢,你不想改每个子组件但是又想给所有用了 modal 的组件加上刷新功能。26 楼的方法可行,刷 key 就可以了。

能解决问题,但是也是给自己埋坑。万一哪个组件又不想自动刷新了呢。。

最好的办法还是重新封装一个 modal 组件,是否需要刷新这个标志由 modal 传入子组件,子组件自己决定刷不刷。
DesnLee 小成 2024-5-14 15:04:03
给要刷新的组件树最顶层的组件一个 key ,改变这个 key 组件内部就会重新渲染
withoutxx 小成 2024-5-14 15:12:12
试了下骚操作,不要在真实项目这么玩,Modal.useXXX 应该都会失效
https://stackblitz.com/edit/react-f4out2

https://i.imgur.com/re1nwlH.png
https://i.imgur.com/ovddY5G.png
返回顶部