You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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),也可以直接派发refreshView action:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:26:24