Refactor ObjectForm Component to Use Fetched Data for Editing State
- Updated ObjectForm to prefer fetched snapshot data over stale objectData when entering edit mode, ensuring accurate state management. - Enhanced logic to compute next object data based on the latest server data, improving user experience during editing. - Simplified state change handling by integrating base data checks, reducing potential errors during data updates.
This commit is contained in:
parent
9a601245b6
commit
8b33a82a65
@ -770,17 +770,24 @@ const ObjectForm = forwardRef(
|
|||||||
isEditingRef.current = true
|
isEditingRef.current = true
|
||||||
setIsEditing(true)
|
setIsEditing(true)
|
||||||
|
|
||||||
const computedEntries = calculateComputedValues(objectData, model)
|
// Prefer the fetched snapshot over a stale objectData closure
|
||||||
const nextObjectData = {
|
// (?action=edit can start before fetch finishes).
|
||||||
...applyComputedEntries(objectData, computedEntries),
|
const baseData = serverObjectData.current
|
||||||
_isEditing: true
|
if (baseData) {
|
||||||
|
const computedEntries = calculateComputedValues(baseData, model)
|
||||||
|
const nextObjectData = {
|
||||||
|
...applyComputedEntries(baseData, computedEntries),
|
||||||
|
_isEditing: true
|
||||||
|
}
|
||||||
|
setObjectData(nextObjectData)
|
||||||
|
onStateChangeRef.current({
|
||||||
|
isEditing: true,
|
||||||
|
objectData: nextObjectData,
|
||||||
|
editDisabled: getEditDisabled(model, nextObjectData, userProfile)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
onStateChangeRef.current({ isEditing: true })
|
||||||
}
|
}
|
||||||
setObjectData(nextObjectData)
|
|
||||||
onStateChangeRef.current({
|
|
||||||
isEditing: true,
|
|
||||||
objectData: nextObjectData,
|
|
||||||
editDisabled: getEditDisabled(model, nextObjectData, userProfile)
|
|
||||||
})
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
showError(
|
showError(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user