Office Fluent UI / Fabric UI Modal - 如何从 body 组件中关闭它?
Office Fluent UI / Fabric UI Modal - how can I close it from the body component?
我正在使用 fluent-ui-react
中的模态组件
https://developer.microsoft.com/en-us/fluentui#/controls/web/modal
像这样:
function ModalExtended(props) {
const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(
false
);
const isDraggable = useBoolean(false);
const titleId = useId("title");
return (
<div>
<DefaultButton onClick={showModal} text={props.buttonText} />
<Modal
titleAriaId={titleId}
isOpen={isModalOpen}
onDismiss={hideModal}
isBlocking={false}
containerClassName={contentStyles.container}
>
<div className={contentStyles.header}>
<span id={titleId}>{props.gridHeader}</span>
<IconButton
styles={iconButtonStyles}
iconProps={cancelIcon}
ariaLabel="Close popup modal"
onClick={hideModal}
/>
</div>
<div className={contentStyles.body}>{props.body}</div>
</Modal>
</div>
);
}
然后我从其他组件调用 ModalExtended 组件,如下所示:
<ModalExtended
buttonText="Open modal button text"
gridHeader="Modal header text"
body={
<GenericTreeGridContainer/>
}
/>
在 body 道具中,我发送了另一个组件 (GenericTreeGridContainer),我想在模态窗口打开时呈现该组件。
在这个 body 组件中,我有一个点击事件,当它完成它的工作时,它也应该关闭 Modal。
有没有办法将 hideModal 函数从 ModalExtended 组件传递到我的 body 组件,这样我就可以 从 body 组件关闭模态窗口?
用 isModalOpen 和 hideModal 定义一个父组件,并将它们作为 props 传递到 modal 和 body 中。您也可以像 <props.body hideModal={...} />
那样渲染 {props.body}
,但我还没有尝试查看它的模式有多好。
我正在使用 fluent-ui-react
中的模态组件https://developer.microsoft.com/en-us/fluentui#/controls/web/modal
像这样:
function ModalExtended(props) {
const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(
false
);
const isDraggable = useBoolean(false);
const titleId = useId("title");
return (
<div>
<DefaultButton onClick={showModal} text={props.buttonText} />
<Modal
titleAriaId={titleId}
isOpen={isModalOpen}
onDismiss={hideModal}
isBlocking={false}
containerClassName={contentStyles.container}
>
<div className={contentStyles.header}>
<span id={titleId}>{props.gridHeader}</span>
<IconButton
styles={iconButtonStyles}
iconProps={cancelIcon}
ariaLabel="Close popup modal"
onClick={hideModal}
/>
</div>
<div className={contentStyles.body}>{props.body}</div>
</Modal>
</div>
);
}
然后我从其他组件调用 ModalExtended 组件,如下所示:
<ModalExtended
buttonText="Open modal button text"
gridHeader="Modal header text"
body={
<GenericTreeGridContainer/>
}
/>
在 body 道具中,我发送了另一个组件 (GenericTreeGridContainer),我想在模态窗口打开时呈现该组件。 在这个 body 组件中,我有一个点击事件,当它完成它的工作时,它也应该关闭 Modal。
有没有办法将 hideModal 函数从 ModalExtended 组件传递到我的 body 组件,这样我就可以 从 body 组件关闭模态窗口?
用 isModalOpen 和 hideModal 定义一个父组件,并将它们作为 props 传递到 modal 和 body 中。您也可以像 <props.body hideModal={...} />
那样渲染 {props.body}
,但我还没有尝试查看它的模式有多好。