hooks icon indicating copy to clipboard operation
hooks copied to clipboard

希望 useClickAway 支持条件化触发

Open yibird opened this issue 1 month ago • 1 comments

目前useClickAway不支持条件化触发,希望添加一个enbale配置(默认为true),只有当true时才触发函数执行。在写弹窗的逻辑时就遇到这个问题了,弹窗使用open控制是否打开,在组件里面使用useClickAway() 即使做了open状态仍无效

yibird avatar Nov 19 '25 22:11 yibird

@yibird 这样可以达到你想要的效果

export default function Chore() {
  const [count, setCount] = useState(0);
  const [open, setOpen] = useState(false);


  const ref = useRef<HTMLDivElement>(null);
  
  useClickAway(() => {
    setCount(count + 1);
  }, open ? ref : null);
  return (
    <>
      <div>count: {count}</div>
      <Button
        onClick={() => {
          setCount(count + 1);
        }}
      >
        add
      </Button>
      <Button
        onClick={(e) => {
          e.stopPropagation();
          setOpen(true);
        }}
      >
        open
      </Button>
      <Modal
        open={open}
        onCancel={() => {
          setOpen(false);
        }}
        onOk={() => {
          setOpen(false);
        }}
      >
        <div ref={ref}>123</div>
      </Modal>
    </>
  );
}

Arktomson avatar Dec 06 '25 03:12 Arktomson