Dialog
一个适用于 ReactLynx 的无样式对话框组件,提供遮罩渲染、开关状态管理以及进出场动画基础能力。
弹窗组件,可以设置背景遮罩层。
基础用法
结构
API
DialogRoot
The root component of the Dialog, containing all of its child components.
debugLogiOSAndroidHarmony
显示调试日志。发现 bug 时开启。
defaultShowiOSAndroidHarmony
确定弹窗是否默认显示。使用此属性意味着弹窗处于非受控模式。
forceMountiOSAndroidHarmony
即使弹窗未显示,也会挂载弹窗并渲染内容。此时内部状态处于 closed
onCloseiOSAndroidHarmony
当弹出框实际关闭且可能的动画结束时触发。
onOpeniOSAndroidHarmony
当弹出框实际显示且可能的动画结束时触发。
onShowChangeiOSAndroidHarmony
当弹窗即将关闭时触发,可通过点击背景或关闭按钮触发。在受控模式下(提供了
show 属性),您应该使用此处理器来更新控制弹窗可见性的状态。在非受控模式下,此处理器是可选的,会在弹窗内部状态更新之前调用。showiOSAndroidHarmony
是否显示弹出框。如果未设置此属性,弹出框将处于受控模式,这意味着 defaultShow 属性将无效。并且你必须控制点击关闭按钮和背景的行为。
childreniOSAndroidHarmony
子元素
基于状态的样式与渲染
该组件将每一项内部状态通过两条等价通道同时对外暴露,下表逐行给出两者的对应关系:
- CSS className:根节点上会动态加上
ui-<state>形式的类名,可直接用.ui-<state> { ... }选择器定制样式; - Render-prop 字段:当
children传入函数时,同一个状态会以children({ <state>: boolean, ... })的形式作为参数传入,便于在运行时做条件渲染。
ui-animating
弹层正在执行动画。仅在 transition:true 时生效。
当 status.animating 为 true 时生效,可用于 `.ui-animating { ... }`。
ui-closed
弹层处于关闭状态。如果开启了 forceMount,初始状态会是 ui-closed。
当 status.closed 为 true 时生效,可用于 `.ui-closed { ... }`。
ui-entering
弹层正在执行进入动画。仅在 transition:true 时生效。
当 status.entering 为 true 时生效,可用于 `.ui-entering { ... }`。
ui-leaving
弹层正在执行离开动画。仅在 transition:true 时生效。
当 status.leaving 为 true 时生效,可用于 `.ui-leaving { ... }`。
ui-open
弹层处于打开状态。
当 status.open 为 true 时生效,可用于 `.ui-open { ... }`。
DialogBackdrop
The backdrop mask of the dialog.
childreniOSAndroidHarmony
子元素
classNameiOSAndroidHarmony
类名
clickToCloseiOSAndroidHarmony
确定点击背景是否关闭弹窗。此属性作为背景点击事件的行为开关。当值为
true 时,如果弹窗处于非受控模式(未提供 show 属性),点击背景将触发 onClose 回调并关闭弹窗。当值为 false 时,点击背景将没有任何效果。delayed
如果内容需要延迟首屏进行首次渲染,则需要将此属性设置为 true。
dialogBackdropPropsiOSAndroidHarmony
DialogBackdrop 支持将原始 view 属性直接展开到这个属性中。
onClickiOSAndroidHarmony
点击背景时触发。
styleiOSAndroidHarmony
样式
transitioniOSAndroidHarmony
如果设置为 true,则 className 会包含 'ui-entering', 'ui-leaving', 'ui-animating' 等动画相关类名
DialogView
View container. When 'container' is set correctly, the underlying layer will be replaced with overlay; otherwise, it will be a regular view. When the underlying layer is overlay, the 'level' property can be used to control the hierarchical relationship. For a regular view, use 'z-index' to control the hierarchical relationship. If this dialog needs to be used outside of LynxView, consider enabling overlay.
classNameiOSAndroidHarmony
类名
containeriOSAndroidHarmony
如果你想在 LynxView 外部使用弹出框,则需要设置此属性。值为原生容器的名称。
debugLogiOSAndroidHarmony
显示调试日志。发现 bug 时开启。
dialogViewPropsiOSAndroidHarmony
将被直接传递到底层 OverlayView 元素的额外 view 或 overlay 属性
idiOSAndroidHarmony
标识符
overlayLeveliOSAndroidHarmony
仅当 'container' 设置为非空字符串时有效。调整附近元素的显示层级。
styleiOSAndroidHarmony
样式
transitioniOSAndroidHarmony
如果设置为 true,则 className 会包含 'ui-entering', 'ui-leaving', 'ui-animating' 等动画相关类名
childreniOSAndroidHarmony
子元素
基于状态的样式与渲染
该组件将每一项内部状态通过两条等价通道同时对外暴露,下表逐行给出两者的对应关系:
- CSS className:根节点上会动态加上
ui-<state>形式的类名,可直接用.ui-<state> { ... }选择器定制样式; - Render-prop 字段:当
children传入函数时,同一个状态会以children({ <state>: boolean, ... })的形式作为参数传入,便于在运行时做条件渲染。
ui-open
弹层处于打开状态。
当 status.open 为 true 时生效,可用于 `.ui-open { ... }`。
ui-closed
弹层处于关闭状态。如果开启了 forceMount,初始状态会是 ui-closed。
当 status.closed 为 true 时生效,可用于 `.ui-closed { ... }`。
ui-leaving
弹层正在执行离开动画。仅在 transition:true 时生效。
当 status.leaving 为 true 时生效,可用于 `.ui-leaving { ... }`。
ui-entering
弹层正在执行进入动画。仅在 transition:true 时生效。
当 status.entering 为 true 时生效,可用于 `.ui-entering { ... }`。
ui-animating
弹层正在执行动画。仅在 transition:true 时生效。
当 status.animating 为 true 时生效,可用于 `.ui-animating { ... }`。
DialogContent
The main content of the dialog.
childreniOSAndroidHarmony
子元素
classNameiOSAndroidHarmony
类名
delayed
如果内容需要延迟首屏进行首次渲染,则需要将此属性设置为 true。
dialogContentPropsiOSAndroidHarmony
DialogContent 支持将原始 view 属性直接展开到这个属性中。
styleiOSAndroidHarmony
样式
transitioniOSAndroidHarmony
如果设置为 true,则 className 会包含 'ui-entering', 'ui-leaving', 'ui-animating' 等动画相关类名