react-bootstrap-table:如何使用数据库生成的值处理关键字段?

react-bootstrap-table: How to handle key fields with database generated values?

我正在使用 react-bootstrap-table 编写一个 CRUD 应用程序来编辑存储在数据库 table 中的记录。主键是数据库生成的(一个 int 字段,在将记录插入数据库时​​获得递增的值)。此字段的 TableHeaderColumn 定义为 isKey={true}

我无法让插入对话框处理此问题。隐藏插入列时(hiddenOnInsert),对话框报校验错误"id can't be empty value."

我搜索了一种在打开插入对话框之前调用函数的方法,以便能够为创建的行的键列设置一个虚拟值,但没有成功。

如何将插入对话框与数据库生成的键列一起使用?

自己找到答案:设置为 onAddRow 属性 的函数仅在通过插入行对话框添加新行之前调用。我用它来向键字段写入一个虚拟值,如 0 或 ""。我还通过在 TableHeaderColumn 中设置 hiddenOnInsert 来隐藏用于插入的关键字段。插入后(在设置为 afterInsertRow 的函数中),我通过 REST 将新实体添加到数据库中。 REST 方法 returns 新键值。我将此值设置为插入实体的键字段,以避免 bootstrap table 在下次插入新实体时抱怨现有键值。

我知道你说你已经找到了解决办法,但是,@enkara,其他人可能会遇到同样的问题,比如我自己。

我通过在 'onAfterInsertRow' 函数中获取回调时用 'row.pk = newPk' 更新行解决了这个问题:

onAfterInsertRow(row) {

    fetch(...).then(response => {
        if (response.ok ) {

            response = response.json();
            response.then((newPk) => {

                row.pk = newPk
            })

            return response;
        }

        return response.json()
    }).then(...).catch(...)
}