mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-11-15 17:21:38 +03:00
R: Prevent potential infinite loops
This commit is contained in:
parent
a226d014f4
commit
45a9bc6787
|
|
@ -52,9 +52,13 @@ export function EditorConstituenta() {
|
||||||
const role = useRoleStore(state => state.role);
|
const role = useRoleStore(state => state.role);
|
||||||
const listHeight = useFitHeight(!isNarrow ? '8.2rem' : role !== UserRole.READER ? '42rem' : '35rem', '10rem');
|
const listHeight = useFitHeight(!isNarrow ? '8.2rem' : role !== UserRole.READER ? '42rem' : '35rem', '10rem');
|
||||||
|
|
||||||
|
const prevActiveCstId = useRef<number | null>(null);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (activeCst && selected.length !== 1) {
|
if (activeCst && prevActiveCstId.current !== activeCst.id) {
|
||||||
setSelected([activeCst.id]);
|
prevActiveCstId.current = activeCst.id;
|
||||||
|
if (selected.length !== 1 || selected[0] !== activeCst.id) {
|
||||||
|
setSelected([activeCst.id]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, [activeCst, selected, setSelected]);
|
}, [activeCst, selected, setSelected]);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,14 @@
|
||||||
import { useEffect, useMemo } from 'react';
|
import { useEffect, useMemo, useRef } from 'react';
|
||||||
|
|
||||||
export function useResetOnChange<T>(deps: T[], resetFn: () => void) {
|
export function useResetOnChange<T>(deps: T[], resetFn: () => void) {
|
||||||
const depsKey = useMemo(() => JSON.stringify(deps), [deps]);
|
const depsKey = useMemo(() => JSON.stringify(deps), [deps]);
|
||||||
|
const resetFnRef = useRef(resetFn);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
resetFn();
|
resetFnRef.current = resetFn;
|
||||||
}, [depsKey, resetFn]);
|
}, [resetFn]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
resetFnRef.current();
|
||||||
|
}, [depsKey]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user