UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

21 lines (20 loc) 580 B
import * as React from 'react'; export const useControlledState = ( initialValue, controlledState, setControlledState, ) => { let [uncontrolledState, setUncontrolledState] = React.useState(initialValue); let state = React.useMemo( () => (void 0 !== controlledState ? controlledState : uncontrolledState), [controlledState, uncontrolledState], ); let setState = React.useCallback( (value) => { setUncontrolledState(value); setControlledState?.(value); }, [setControlledState, setUncontrolledState], ); return [state, setState]; };