如何在admin-on-rest中编程式刷新Resource的Show视图?
编程式刷新admin-on-rest的Show视图
嘿,这个场景我太熟悉了!手动点刷新按钮能生效,但自定义操作后想自动刷新确实得用内置的方法,下面给你两种靠谱的实现方式:
使用
withRefresh高阶组件
admin-on-rest专门提供了withRefresh这个HOC,它会给你的组件注入一个refreshView方法,调用这个方法就能触发当前视图的刷新。比如你在自定义操作按钮里可以这么用:import { withRefresh, Button } from 'admin-on-rest'; const CustomActionButton = ({ refreshView, record }) => ( <Button onClick={() => { // 先执行你的自定义操作逻辑,比如调用API fetch(`/api/resource/${record.id}/custom-action`, { method: 'POST' }) .then(() => { // 操作成功后调用刷新方法 refreshView(); }); }} > 执行自定义操作并刷新 </Button> ); export default withRefresh(CustomActionButton);直接dispatch Redux action
如果你的组件已经连接了Redux(比如用connect或者admin-on-rest的其他HOC),也可以直接派发refreshViewaction:import { refreshView } from 'admin-on-rest'; import { connect } from 'react-redux'; const CustomActionButton = ({ dispatch, record }) => ( <Button onClick={() => { fetch(`/api/resource/${record.id}/custom-action`, { method: 'POST' }) .then(() => { dispatch(refreshView()); }); }} > 执行自定义操作并刷新 </Button> ); export default connect()(CustomActionButton);
需要注意的是,一定要等你的自定义操作API请求成功完成后再调用刷新方法,不然可能会出现数据不同步的情况。另外,这两种方法都需要组件处于admin-on-rest的Resource上下文之中,确保能正确获取到当前视图的相关信息。
内容的提问来源于stack exchange,提问作者RPallas
相关产品推荐
相关产品推荐

