Skip to content

Commit a83a559

Browse files
committed
Wrap methods in useCallback
1 parent ee39610 commit a83a559

File tree

1 file changed

+67
-38
lines changed

1 file changed

+67
-38
lines changed

src/index.ts

Lines changed: 67 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import FloatToolkit from "@float-toolkit/core";
2-
import { useDebugValue, useMemo, useState } from "react";
2+
import { useCallback, useDebugValue, useEffect, useMemo, useState } from "react";
33

44
import versionNumbers from "./versionNumbers";
55

@@ -95,56 +95,85 @@ function useFloatToolkit(defaultPrecision?: ReactFT.Precision, options?: ReactFT
9595
const [output, setOutput] = useState(0);
9696
useDebugValue(output);
9797

98-
const ft = useMemo(() => new FloatToolkit(defaultPrecision, options), [defaultPrecision, options]);
98+
const ft = useMemo(() => new FloatToolkit(), []);
9999

100-
function add(numbers: number[], precision?: ReactFT.Precision): number {
101-
const result = ft.add(numbers, precision);
100+
useEffect(() => {
101+
ft.defaultPrecision = defaultPrecision ?? ft.defaultPrecision;
102+
}, [ft, defaultPrecision]);
102103

103-
setOutput(result);
104-
return result;
105-
}
104+
useEffect(() => {
105+
ft.resetOptions(options ?? {});
106+
}, [ft, options]);
106107

107-
function divide(numbers: number[], precision?: ReactFT.Precision): number {
108-
const result = ft.divide(numbers, precision);
108+
const add = useCallback(
109+
(numbers: number[], precision?: ReactFT.Precision): number => {
110+
const result = ft.add(numbers, precision);
109111

110-
setOutput(result);
111-
return result;
112-
}
112+
setOutput(result);
113+
return result;
114+
},
115+
[ft]
116+
);
113117

114-
function multiply(numbers: number[], precision?: ReactFT.Precision): number {
115-
const result = ft.multiply(numbers, precision);
118+
const divide = useCallback(
119+
(numbers: number[], precision?: ReactFT.Precision): number => {
120+
const result = ft.divide(numbers, precision);
116121

117-
setOutput(result);
118-
return result;
119-
}
122+
setOutput(result);
123+
return result;
124+
},
125+
[ft]
126+
);
120127

121-
function resetOptions(options?: Partial<ReactFT.Options>, resetOutput?: boolean): ReactFT.Options {
122-
if (resetOutput) _methodResetOutput();
123-
return ft.resetOptions(options);
124-
}
128+
const multiply = useCallback(
129+
(numbers: number[], precision?: ReactFT.Precision): number => {
130+
const result = ft.multiply(numbers, precision);
125131

126-
function round(n: number, precision?: ReactFT.Precision): number {
127-
const result = ft.round(n, precision);
132+
setOutput(result);
133+
return result;
134+
},
135+
[ft]
136+
);
128137

129-
setOutput(result);
130-
return result;
131-
}
138+
const _methodResetOutput = useCallback((): void => {
139+
setOutput(0);
140+
}, []);
132141

133-
function setOptions(options?: Partial<ReactFT.Options>, resetOutput?: boolean): ReactFT.Options {
134-
if (resetOutput) _methodResetOutput();
135-
return ft.resetOptions(options);
136-
}
142+
const resetOptions = useCallback(
143+
(options?: Partial<ReactFT.Options>, resetOutput?: boolean): ReactFT.Options => {
144+
if (resetOutput) _methodResetOutput();
145+
return ft.resetOptions(options);
146+
},
147+
[ft, _methodResetOutput]
148+
);
137149

138-
function subtract(numbers: number[], precision?: ReactFT.Precision): number {
139-
const result = ft.subtract(numbers, precision);
150+
const round = useCallback(
151+
(n: number, precision?: ReactFT.Precision): number => {
152+
const result = ft.round(n, precision);
140153

141-
setOutput(result);
142-
return result;
143-
}
154+
setOutput(result);
155+
return result;
156+
},
157+
[ft]
158+
);
144159

145-
function _methodResetOutput(): void {
146-
setOutput(0);
147-
}
160+
const setOptions = useCallback(
161+
(options?: Partial<ReactFT.Options>, resetOutput?: boolean): ReactFT.Options => {
162+
if (resetOutput) _methodResetOutput();
163+
return ft.resetOptions(options);
164+
},
165+
[ft, _methodResetOutput]
166+
);
167+
168+
const subtract = useCallback(
169+
(numbers: number[], precision?: ReactFT.Precision): number => {
170+
const result = ft.subtract(numbers, precision);
171+
172+
setOutput(result);
173+
return result;
174+
},
175+
[ft]
176+
);
148177

149178
return {
150179
get defaultPrecision(): ReactFT.Precision {

0 commit comments

Comments
 (0)