可以在react-admin中将startUndoable与自定义操作一起使用吗?

时间:2019-01-22 16:11:07

标签: javascript reactjs react-admin

我想知道将具有自定义提取和类型(不是更新)的自定义操作传递给startUndoable是否可行。

或者是否有可能以某种方式在meta中定义一个具有值的模式,并根据该模式重新渲染视图?

在这种情况下,IMPORT仅更新数据库中具有固定值的一个属性。

这是动作:

export const importParcel = ({ id }) => ({
    type: IMPORT_PARCEL,
    payload: {
        id
    },
    meta: {
        resource: 'parcels',
        fetch: IMPORT,
        refresh: true,
        onSuccess: {
            notification: {
                body: 'Parcel Imported',
                level: 'info'
            }
        },
        onFailure: {
            notification: {
                body: 'Error: Import failed',
                level: 'warning'
            }
        }
    }
});

这是处理程序:

fetchUtils
.fetchJson(`/${resource}/import/${params.id}`, {
    method: 'PUT',
    headers: getAuthenticationHeaders()
})
.then(res => ({ data: res.json }));

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:0)

当然,如Optimistic Rendering and Undo文档中所述,您可以使用startUndoable创建所需的任何操作:

import { startUndoable as startUndoableAction } from 'ra-core';

class App extends Component {
    handleImport = () => {
        this.props.startUndoable(importParcel());
    };

    render() {
        return <Button onClick={this.handleImport}>Import Parcel</Button>;
    }
}

export default connect(null, { startUndoable: startUndoableAction })(App);

您的操作必须具有onSuccess通知才能显示撤消按钮。

其余应在您的数据提供者中实现。