【问题标题】:How to capture the new id of a record created in react-admin?如何捕获在 react-admin 中创建的记录的新 ID?
【发布时间】:2019-06-21 18:55:49
【问题描述】:

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

最好的方法是什么?

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

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

或者,

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

还有其他想法吗?

【问题讨论】:

  • 您也可以使用本地存储 localStorage.setItem("YourId", IDValue) 并使用 localStorage.getItem("YourId") 在应用中的任何位置读取它

标签: javascript reactjs react-admin


【解决方案1】:

您可以创建自定义 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

【讨论】:

  • 我会将此标记为官方答案,尽管我可能不会使用此方法,因为我不必执行简单而纯粹的副作用。但是,通过添加此方法,我认为所有选项都已找到。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 2015-07-16
  • 2020-07-13
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多