moves functions from component to the outside (to not cause re-rendering)

This commit is contained in:
Mose Müller 2024-07-08 15:15:04 +02:00
parent 34eb4a0e7c
commit c42872aad4
2 changed files with 24 additions and 24 deletions

View File

@ -48,6 +48,13 @@ const createDisplayNameFromAccessPath = (fullAccessPath: string): string => {
return getPathFromPathParts(displayNameParts);
};
function changeCallback(
value: SerializedObject,
callback: (ack: unknown) => void = () => {},
) {
updateValue(value, callback);
}
export const GenericComponent = React.memo(
({ attribute, isInstantUpdate, addNotification }: GenericComponentProps) => {
const { full_access_path: fullAccessPath } = attribute;
@ -65,13 +72,6 @@ export const GenericComponent = React.memo(
}
}
function changeCallback(
value: SerializedObject,
callback: (ack: unknown) => void = () => {},
) {
updateValue(value, callback);
}
if (attribute.type === "bool") {
return (
<ButtonComponent

View File

@ -24,6 +24,23 @@ interface SliderComponentProps {
id: string;
}
const deconstructNumberDict = (
numberDict: NumberObject,
): [number, boolean, string | undefined] => {
let numberMagnitude = 0;
let numberUnit: string | undefined = undefined;
const numberReadOnly = numberDict.readonly;
if (numberDict.type === "int" || numberDict.type === "float") {
numberMagnitude = numberDict.value;
} else if (numberDict.type === "Quantity") {
numberMagnitude = numberDict.value.magnitude;
numberUnit = numberDict.value.unit;
}
return [numberMagnitude, numberReadOnly, numberUnit];
};
export const SliderComponent = React.memo((props: SliderComponentProps) => {
const renderCount = useRenderCount();
const [open, setOpen] = useState(false);
@ -117,23 +134,6 @@ export const SliderComponent = React.memo((props: SliderComponentProps) => {
changeCallback(serializedObject);
};
const deconstructNumberDict = (
numberDict: NumberObject,
): [number, boolean, string | undefined] => {
let numberMagnitude = 0;
let numberUnit: string | undefined = undefined;
const numberReadOnly = numberDict.readonly;
if (numberDict.type === "int" || numberDict.type === "float") {
numberMagnitude = numberDict.value;
} else if (numberDict.type === "Quantity") {
numberMagnitude = numberDict.value.magnitude;
numberUnit = numberDict.value.unit;
}
return [numberMagnitude, numberReadOnly, numberUnit];
};
const [valueMagnitude, valueReadOnly, valueUnit] = deconstructNumberDict(value);
const [minMagnitude, minReadOnly] = deconstructNumberDict(min);
const [maxMagnitude, maxReadOnly] = deconstructNumberDict(max);