Fix table re-renders on update field (#6722)
The update of all fields was caused by `useContextSelector` not being properly implemented. As it is a memoization library the `useRecordFieldValue` hook wasn't giving to the library the required things to allow memoization. I just added recordId + fieldName to the memoization function so that `useContextSelector` doesn't recompute itself whenever any record changes.
This commit is contained in:
@ -30,22 +30,22 @@ export const useSetRecordValue = () => {
|
||||
export const useRecordValue = (recordId: string) => {
|
||||
const tableValue = useContextSelector(
|
||||
RecordFieldValueSelectorContext,
|
||||
(value) => value[0],
|
||||
(value) => value[0]?.[recordId],
|
||||
);
|
||||
|
||||
return tableValue?.[recordId] as ObjectRecord | undefined;
|
||||
return tableValue as ObjectRecord | undefined;
|
||||
};
|
||||
|
||||
export const useRecordFieldValue = <T,>(
|
||||
recordId: string,
|
||||
fieldName: string,
|
||||
) => {
|
||||
const recordFieldValues = useContextSelector(
|
||||
const recordFieldValue = useContextSelector(
|
||||
RecordFieldValueSelectorContext,
|
||||
(value) => value[0],
|
||||
(value) => value[0]?.[recordId]?.[fieldName],
|
||||
);
|
||||
|
||||
return recordFieldValues?.[recordId]?.[fieldName] as T;
|
||||
return recordFieldValue as T | undefined;
|
||||
};
|
||||
|
||||
export const useSetRecordFieldValue = () => {
|
||||
|
||||
Reference in New Issue
Block a user