mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
* Fixes under public/app/plugins * Fixes under public/app/plugins/datasource * Fixes under public/app/features * Fixes under public/app/features * Fixes under public/app/features * Fixes under public/app/components * Fix PanelNotSupported test * Fix one more warning * Fix warning in usePanelSave * Fix traceview empty response * Azure monitor fixes * More fixes * Fix tests for azure monitor * Fixes after merging master * Add comment for disabled rules * Fixes after merging master * Fixes after merging master * Adress review comments * Fix azure tests * Address review feedbacks
19 lines
688 B
TypeScript
19 lines
688 B
TypeScript
import { useState, useEffect } from 'react';
|
|
import { usePrevious } from 'react-use';
|
|
|
|
export function useShadowedState<T>(outsideVal: T): [T, (newVal: T) => void] {
|
|
const [currentVal, setCurrentVal] = useState(outsideVal);
|
|
const prevOutsideVal = usePrevious(outsideVal);
|
|
|
|
useEffect(() => {
|
|
const isOutsideValChanged = prevOutsideVal !== outsideVal;
|
|
// if the value changes from the outside, we accept it into the state
|
|
// (we only set it if it is different from the current value)
|
|
if (isOutsideValChanged && currentVal !== outsideVal) {
|
|
setCurrentVal(outsideVal);
|
|
}
|
|
}, [outsideVal, currentVal, prevOutsideVal]);
|
|
|
|
return [currentVal, setCurrentVal];
|
|
}
|