如何捕获在 react-admin 中创建的记录的新 ID?
How to capture the new id of a record created in react-admin?
我想在创建记录后立即触发一个操作来使用在 react-admin 中创建的记录的新 ID。
最好的方法是什么?
以下是一些基于 the props you can pass to SimpleForm/TabbedForm and this issue by one of the project maintainers 的想法。
- 包装传递给表单的
save
函数。
- 为我的表单创建自定义
toolbar
和“保存”按钮,尝试将其连接到那里。
- 使用表单
redirect
属性重定向到一个临时页面,我在其中处理新 ID。
或者,
- 尝试使用 redux-form API 挂钩表单生命周期事件。
- 在我的自定义数据提供程序中添加一些额外的代码来触发我的操作。
还有其他想法吗?
您可以创建自定义 saga 并处理 CRUD_CREATE_SUCCESS 操作:
https://marmelab.com/react-admin/Actions.html#custom-sagas
createSuccessSaga.js
import {
put,
takeEvery,
} from 'redux-saga/effects'
import {
CRUD_CREATE_SUCCESS,
} from 'react-admin'
function* createSuccess(action) {
try {
console.log('createSuccess:', action) // action.payload.data.id -> Record ID
yield put('you action')
} catch (error) {
console.log('createSuccess:', error)
}
}
function* createSuccessSaga() {
yield takeEvery(CRUD_CREATE_SUCCESS, createSuccess)
}
export default createSuccessSaga
我想在创建记录后立即触发一个操作来使用在 react-admin 中创建的记录的新 ID。
最好的方法是什么?
以下是一些基于 the props you can pass to SimpleForm/TabbedForm and this issue by one of the project maintainers 的想法。
- 包装传递给表单的
save
函数。 - 为我的表单创建自定义
toolbar
和“保存”按钮,尝试将其连接到那里。 - 使用表单
redirect
属性重定向到一个临时页面,我在其中处理新 ID。
或者,
- 尝试使用 redux-form API 挂钩表单生命周期事件。
- 在我的自定义数据提供程序中添加一些额外的代码来触发我的操作。
还有其他想法吗?
您可以创建自定义 saga 并处理 CRUD_CREATE_SUCCESS 操作: https://marmelab.com/react-admin/Actions.html#custom-sagas
createSuccessSaga.js
import {
put,
takeEvery,
} from 'redux-saga/effects'
import {
CRUD_CREATE_SUCCESS,
} from 'react-admin'
function* createSuccess(action) {
try {
console.log('createSuccess:', action) // action.payload.data.id -> Record ID
yield put('you action')
} catch (error) {
console.log('createSuccess:', error)
}
}
function* createSuccessSaga() {
yield takeEvery(CRUD_CREATE_SUCCESS, createSuccess)
}
export default createSuccessSaga