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

223 天前
 790002517zzy
比如这样的需求,有什么比较好的方式吗?刷新当前组件的方式也可以。


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

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

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


790002517zzy
223 天前
新问题...把所有的 Modal 改成 26#之后,节点直接无限刷新了,页面不出来
790002517zzy
223 天前
没事了没事了,一键替换的时候重复循环了
natamox
222 天前
setState({})

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

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

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

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

© 2021 V2EX