如何捕获在react-admin中创建的记录的新ID?

时间:2019-06-21 18:55:49

标签: javascript reactjs react-admin

创建记录后,我想立即触发操作以使用在react-admin中创建的记录的新ID。

最好的方法是什么?

以下是基于the props you can pass to SimpleForm/TabbedFormthis issue by one of the project maintainers的一些想法。

  • 包装传递给表单的save函数。
  • 为我的表单创建一个自定义toolbar和“保存”按钮,尝试将其钩在那里。​​
  • 使用表单redirect的属性重定向到我在新ID上进行工作的临时页面。

或者,

  • 尝试使用redux-form API连接表单生命周期事件。
  • 在我的自定义数据提供程序中添加一些额外的代码以触发我的操作。

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个自定义的传奇,并处理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