是否可以在 react-admin 中将 startUndoable 与自定义操作一起使用?
Is it possible to use startUndoable with custom action in 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 }));
感谢您的帮助! :)
当然,如 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
通知才能显示撤消按钮。
其余部分应在您的数据提供程序中实施。
我想知道将具有自定义提取和类型(不是更新)的自定义操作传递给 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 }));
感谢您的帮助! :)
当然,如 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
通知才能显示撤消按钮。
其余部分应在您的数据提供程序中实施。