15 lines
535 B
JavaScript
15 lines
535 B
JavaScript
import { useCallback, useRef, useState } from 'react';
|
|
export function useMediatedState(mediator, initialState) {
|
|
var mediatorFn = useRef(mediator);
|
|
var _a = useState(initialState), state = _a[0], setMediatedState = _a[1];
|
|
var setState = useCallback(function (newState) {
|
|
if (mediatorFn.current.length === 2) {
|
|
mediatorFn.current(newState, setMediatedState);
|
|
}
|
|
else {
|
|
setMediatedState(mediatorFn.current(newState));
|
|
}
|
|
}, [state]);
|
|
return [state, setState];
|
|
}
|