reactjs - 如何将editedRows从DataGrid MUI更新到firebase?
问题描述
如何将我刚刚编辑的值更新到 firebase?到目前为止,这是我从 editRow 了解到的(如果我错了,请纠正我)。
内部数据网格
//Enable edit mode for row and not cell
editMode="row"
//any update you do in the row is stored in this variable so when you finish it overrides
//w/e you had there with editRowsModel value
editRowsModel={editRowsModel}
//Calls for the function that will be handeling the updates and the all the updates into "model"
onEditRowsModelChange={handleEditRowsModelChange}
//For Double Click + Control
//(That way if uses double click by mistake it doesn't enable editMode)
onCellDoubleClick={(params, event) => {
if (!event.ctrlKey) {
event.defaultMuiPrevented = true;
}
}}
常量
//Variable that will hold the edited variable
const [editRowsModel, setEditRowsModel] = React.useState({});
//Edit function
const handleEditRowsModelChange = React.useCallback((model) => {
setEditRowsModel(model);
}, []);
现在在 Edit 函数中,我想编辑该行,但我怎样才能更新到 firebase?就像我有这个:
const [editRowsModel, setEditRowsModel] = React.useState({});
const handleEditRowsModelChange = React.useCallback((model) => {
setEditRowsModel(model);
console.log(model.uid)
/*
estudiantes.filter( x => {
const temporalQuery = db.collection("usuarios").doc(user.uid).collection("estudiantes").doc(x.uid);
temporalQuery.update({
nombre: model.nombre,
colegio: model.colegio,
grado: model.grado
})
})
*/
}, []);
但是这不起作用,因为我看不到模型中的各个值,因为它只是说“未定义”,否则这将起作用。我怎样才能得到模型的个别值?
并且因为未定义,所以当我尝试该代码时会出现错误。
欢迎任何帮助/提示。
模型如何记录
console.log(model)
console.log(model.name)
console.log(model[0].name)
解决方案
我不确定我是否正确理解了您的问题,但如果您想访问编辑行数据,您可以这样做:
const [editRowsModel, setEditRowsModel] = React.useState({});
const [editRowData, setEditRowData] = React.useState({});
const handleEditRowsModelChange = React.useCallback(
(model) => {
const editedIds = Object.keys(model);
// user stops editing when the edit model is empty
if (editedIds.length === 0) {
alert(JSON.stringify(editRowData, null, 4));
// update on firebase
} else {
setEditRowData(model[editedIds[0]]);
}
setEditRowsModel(model);
},
[editRowData]
);
console.log(editRowData);
return (
<div style={{ height: 300, width: "100%" }}>
<DataGrid
rows={rows}
columns={columns}
editMode="row"
editRowsModel={editRowsModel}
onEditRowsModelChange={handleEditRowsModelChange}
/>
</div>
);
现场演示
推荐阅读
- tensorflow - 关于tensorflow lite量化代码、论文和文档不一致的问题
- firebase - Firebase Cloud Function 我想更改所有用户数据
- node.js - Heroku Postgres:未处理的拒绝错误:自签名证书
- python - 是在 keras 的动量之前还是之后应用剪辑规范?
- html - 是否可以在 perl 中用符号链接替换 url?
- indexeddb - 如何取消订阅 Dexie Hook
- reactjs - 我如何处理 redux-saga 中的 axios 错误
- c++ - 了解 compare_exchange_weak
- amazon-web-services - AWS EC2 - 我可以使用公共 DNS 主机名完成哪些我无法使用公共 IPv4 地址的事情?
- android - 放大 Auth 和 Android:如何获取访客会话令牌?