【发布时间】:2018-02-02 09:19:01
【问题描述】:
我正在编写一个包含许多模态的 React 应用程序(但一次只有一个处于活动状态,没有嵌套的模态),我不确定这两种解决方案中的哪一种在处理显示和隐藏这些模态:
-
在父组件中有一个状态布尔变量,用于确定是否应显示模态框。如果此布尔变量为 false,则不渲染组件。如果是真的,渲染它。允许模态通过它可以利用的传入的 props 回调来影响此事件。示例 sn-ps:
{ this.state.prompt === "makePW" ? <MakePassword closeModal={this.closePWModal} /> : null }现在,在组件内,它始终是可见的,并且不控制其生命周期。如果它正在渲染,那么它是可见的。
-
始终在父组件中显示该组件,如下所示:
<MakePassword />然后在组件本身内处理其整个生命周期。也就是说,组件将具有一个布尔状态变量来表示其可见性。这种方法的一些 sn-ps:
<Modal open={this.state.open} onClose={this.closeModal}> <Modal.Header>Header</Modal.Header> <Modal.Content>Body</Modal.Content> </Modal>
我敢肯定,还有混合方法和其他解决方案。
无论如何,我想我的问题的本质是想知道显示和隐藏模式的最佳解决方案:是始终呈现它们并只是切换它们的可见性,还是实际上在从 DOM 中添加和删除它们之间切换?而且,模态本身一般应该控制其生命周期还是应该由父级控制?
【问题讨论】:
-
要么。我个人不会在永远不会使用它们的组件上渲染模态框,而是将它们隐藏在使用的组件上。这样可以实现漂亮的过渡,并在不需要的地方节省开销。
-
如果任一解决方案更可取,我应该使用哪些其他潜在标准来做出决定?我不认为我会使用过渡。
标签: javascript node.js reactjs modal-dialog electron