javascript - react 条件渲染模式

标签 javascript reactjs

我已经实现了一个模态组件,它在屏幕上显示一个模态对话框。通常模式会有条件地显示。我可以通过两种方法在渲染函数中执行此操作:

render(){
    ...
    <Modal show={this.state.showModal}>
        // something in modal
    </Modal>
}

在模态组件中,我使用 this.props.show 为其自身添加一个不同的类。当此值为 false 时,它​​将添加一个 display:none 来隐藏模式。

另一种方法是这样的:

render(){
    ...
    { this.state.showModal &&
        (<Modal>
            // something in modal
        </Modal>)
    }
}

这使用 showModal 来决定是否在渲染中添加 Modal。

我想弄清楚的是:

  1. 这两种方式有什么不同?
  2. 其中一个比另一个更好吗?
  3. 还有其他方法可以做到这一点吗?

编辑:似乎不同的人有不同的偏好。对于我自己来说,我更喜欢@ErikTheDeveloper 所说的。显示/隐藏Modal的能力应该保留在Modal内部,当我们不需要显示Modal时,我们可以在Modal中返回null。

我认为对于哪种方式更好可能没有确定的答案。也许这只是个人选择?

最佳答案

您的第一个示例始终呈现模式,但使用 CSS 隐藏/显示它。

您的第二个示例仅在显示时将模态插入到 DOM 中,否则它根本不会显示在 DOM 中。

我宁愿不渲染它,除非它是可见的(第二个例子),但我认为这两种方式都不重要。第二个示例现在的 props 也更少,因此 Modal 组件更简单。

关于javascript - react 条件渲染模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34348165/

相关文章:

javascript - 如何根据封面照片的 div 高度和位置调整图像大小?

javascript - 如何使用 Id 销毁 Canvas 并将新 Canvas 添加到相同的 id

javascript - 发送数据后更改页面 View

javascript - React Context API - 获取更新的状态值

reactjs - React Hooks,setState 的更新值显示另一个组件中的初始值

javascript - Angular 中传回回调的数据未定义

c# - MVC ASP & Javascript 变量共享

java - 使用 Java 解码来自 WebSocket 的 "send"消息

javascript - 如何在 react 中悬停时在图像上添加过渡时间?

javascript - 在 React 中使用 PropTypes 将字符串值作为对象传递给 Redux 组件