981377660LMT / ts

ts学习
6 stars 1 forks source link

dropdown 的 onVisibleChange #385

Open 981377660LMT opened 9 months ago

981377660LMT commented 9 months ago

dropdown 上有 visible 和 onVisibleChange 两个属性:

981377660LMT commented 9 months ago

https://arco.design/react/components/trigger

onVisibleChange的触发时机说明

  1. trigger包含click时 鼠标点击空白处,会触发onVisibleChange,隐藏弹出层。设置 clickOutsideToClose=false 可以阻止触发。 鼠标点击触发节点,例如示例中的 Button,会触发onVisibleChange,隐藏/显示弹出层。在弹出层展示状态下,如果设置 clickToClose=false,则再点击触发节点,将不会隐藏弹出层。 也可以不设置onVisibleChange,完全由外部控制是否显示。

  2. trigger包含contextMenu时 鼠标点击空白处,会触发onVisibleChange,隐藏弹出层。设置 clickOutsideToClose=false 可以阻止触发。 在children上鼠标点击右键,会触发onVisibleChange,显示弹出层。

  3. trigger 包含 hover 时 鼠标从弹出层移出,并未在mouseLeaveDelay时间内移入触发节点,会触发onVisibleChange,隐藏弹出层。 鼠标从触发节点移出,并未在mouseLeaveDelay时间内移入弹出层,会触发onVisibleChange,隐藏弹出层。 如果设置了popupHoverStay=false,则鼠标无法移入弹出层。在trigger包含hover时,点击空白处不会隐藏弹窗,因为可能引起onVisibleChange被多次触发。可以在 onClickOutside 执行必要的逻辑

  4. trigger 包含 focus 时 触发节点失去焦点,就会触发onVisibleChange,隐藏弹出层。 当设置blurToHide=false时,点击空白处会触发onVisibleChange,隐藏弹出层。设置 clickOutsideToClose=false 可以阻止触发。 如果不期望失去焦点隐藏弹出层,可设置 blurToHide=false

981377660LMT commented 9 months ago

mtd dropdown content bug:只能恰好包一层div 如果mobx 没问题,说明是自己组件问题