1.1.0 • Published 1 year ago

@over-ui/use-controlled v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

over-ui/useControlled

useControlled 패키지는, over-ui 에서 상태를 관리하는 훅입니다. 내부에서만 사용하는 패키지입니다.

Usage

const Toggle: Poly.Component<typeof DEFAULT_TOGGLE, ToggleProps> =
  React.forwardRef(
    <T extends React.ElementType = typeof DEFAULT_TOGGLE>(
      props: Poly.Props<T, ToggleProps>,
      ref: Poly.Ref<T>,
    ) => {
      const {
        onClick,
        onKeyDown,
        onPressedChange,
        disabled = false,
        children,
        defaultPressed = false,
        pressed: pressedProp,
        as,
        ...restProps
      } = props;

      const [pressed, setPressed] = useControlled({
        value: pressedProp,
        defaultValue: defaultPressed,
        onChange: onPressedChange,
      });

      ...
      );
    },
  );

이를 통해, 다음과 같이 이용할 수 있습니다.

function Home() {
  const [state, setState] = useState(false);
  return (
    <>
      <Toggle pressed={state} onPressedChange={(pressed) => setState(pressed)} />
    </>
  );
}
  • useControlled의 value, onValueChange를 이용할 경우 외부의 상태를 이용할 수 있습니다.
function Home() {
  return (
    <>
      <Toggle
        defaultPressed={false}
        onPressedChange={(pressed) => console.log(pressed)}
        // false
      />
    </>
  );
}
  • 외부의 상태를 정의하지 않고, 내부의 상태만을 활용할 수 있습니다.