Skip to content

Commit e37f65f

Browse files
fix(useRefState): prevent rerender if value is not changed
1 parent ad2f886 commit e37f65f

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/hooks/useRefState/useRefState.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@ export interface StateRef<Value> {
1010
const createRefState = <Value>(initialValue: Value | undefined, rerender: () => void) => {
1111
let temp = initialValue;
1212
function ref(value: Value) {
13-
temp = value;
14-
rerender();
13+
if (temp !== value) {
14+
temp = value;
15+
rerender();
16+
}
1517
}
1618

1719
Object.defineProperty(ref, 'current', {
1820
get() {
1921
return temp;
2022
},
2123
set(value: Value) {
22-
rerender();
23-
temp = value;
24+
if (temp !== value) {
25+
temp = value;
26+
rerender();
27+
}
2428
},
2529
configurable: true,
2630
enumerable: true

0 commit comments

Comments
 (0)