react 怎么给每个组件都加上刷新按钮?感觉这种需求很难搞。。修改 antd 的源码能行吗

2024-05-14 10:29:50 +08:00
 790002517zzy
比如这样的需求,有什么比较好的方式吗?刷新当前组件的方式也可以。


组件都是用 antd 的 Modal 弹出来的,只要刷 Modal 就行:
4428 次点击
所在节点    React
33 条回复
kinghly
2024-05-14 14:22:36 +08:00
最简单就是关闭时销毁 modal
790002517zzy
2024-05-14 14:25:19 +08:00
@kinghly 是的,destroyOnClose 属性,但是不够理想,用户需要关闭 modal 重新打开才可以
@leroy20317 写在 html 中的
@ZSeptember refresh 怎么刷新(或者逻辑是关闭打开) modal 中的组件呢?
vanchKong
2024-05-14 14:36:28 +08:00
写个组件,传入刷新方法就行了呗
Mexion
2024-05-14 14:38:30 +08:00
Modal 的内容不是你自己传进去的吗,你自己搞个有刷新按钮的高阶组件,需要刷新的组件套进去就行了
790002517zzy
2024-05-14 14:42:45 +08:00
update 方法可以更新 modal 窗口,问题来了,怎么获取它?可以在根页面直接通过 ref 拿到顶层 modal 的 dom 吗?
gaoxiu
2024-05-14 14:43:07 +08:00
@790002517zzy #20 意思是 只需要刷新 Modal 内的组件?那么这个组件的数据是自治的吧?是的话就挺简单的:
1. 用 Modal 的 closeIcon 重新定义关闭图标,借用这个 api 添加一个刷新按钮(记得阻止刷新按钮的冒泡事件)
2. 需要刷新的子组件添加 key 属性,每次刷新的时候更新这个 key
theohateonion
2024-05-14 15:00:30 +08:00
噢,你不想改每个子组件但是又想给所有用了 modal 的组件加上刷新功能。26 楼的方法可行,刷 key 就可以了。

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

最好的办法还是重新封装一个 modal 组件,是否需要刷新这个标志由 modal 传入子组件,子组件自己决定刷不刷。
DesnLee
2024-05-14 15:04:03 +08:00
给要刷新的组件树最顶层的组件一个 key ,改变这个 key 组件内部就会重新渲染
790002517zzy
2024-05-14 15:10:17 +08:00
@gaoxiu 感谢好像搞定了,把组件替换掉,更换下引用就行
谢谢大家
withoutxx
2024-05-14 15:12:12 +08:00
试了下骚操作,不要在真实项目这么玩,Modal.useXXX 应该都会失效
https://stackblitz.com/edit/react-f4out2


790002517zzy
2024-05-14 15:56:57 +08:00
新问题...把所有的 Modal 改成 26#之后,节点直接无限刷新了,页面不出来
790002517zzy
2024-05-14 16:06:03 +08:00
没事了没事了,一键替换的时候重复循环了
natamox
2024-05-15 13:01:29 +08:00
setState({})

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1040525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX