热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

渲染所有可能的元素或根据请求渲染-Renderallpossibleelementsorrenderonrequest

SoIhaveanappthathasarightsidebarwhosevisibilityistoggledviaabutton.Inthatsidebar

So I have an app that has a right sidebar whose visibility is toggled via a button. In that sidebar there can be one of several things [at a time] - chat, help, search. I was looking at some plain HTML from apps which have a similar feature and noticed that they have all nodes rendered, but are just hidden via CSS.

所以我有一个带有右侧边栏的应用程序,其可见性通过按钮切换。在那个侧边栏中,[一次]可以有几个东西中的一个 - 聊天,帮助,搜索。我正在从具有类似功能的应用程序中查看一些简单的HTML,并注意到它们已经渲染了所有节点,但只是通过CSS隐藏。

Since I need to do the same thing, I was thinking whether this would be a good idea to do with React. But then I realized that React elements have a state which when updated calls the render method. So I can use the state to store both whether the sidebar is opened, and what is inside the sidebar.

由于我需要做同样的事情,我在想是否这对React来说是个好主意。但后来我意识到React元素有一个状态,当更新时调用render方法。因此,我可以使用状态来存储侧边栏是否打开以及侧边栏内部的内容。

Is that the React way of doing things? Is it better to have all nodes rendered even if they are not visible, or is it better to have the nodes rendered on request via state changes?

这是React的做事方式吗?是否更好地渲染所有节点,即使它们不可见,或者通过状态更改请求呈现节点更好?

1 个解决方案

#1


0  

My feeling is that only rendering what is visible would be the more standard React way, but in this case, this is mainly a performance decision. If you render everything and just toggle visibility with CSS, the first render will take longer (but the time difference may not be relevant or even noticeable). If you render only the part that's visible, React needs to do a small rerender every time the sidebar content changes. (This may also not be noticeable time.)

我的感觉是,只渲染可见的内容将是更标准的React方式,但在这种情况下,这主要是一个性能决策。如果渲染所有内容并仅使用CSS切换可见性,则第一次渲染将花费更长时间(但时差可能不相关甚至不明显)。如果只渲染可见的部分,每当侧边栏内容发生变化时,React都需要做一个小的重新渲染。 (这可能也不是明显的时间。)

My recommendation would be to try both, if you want to test the performance. But I think you won't go too wrong either way.

如果你想测试性能,我的建议是尝试两者。但我认为你不会走错路。


推荐阅读
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 我在一个标签中嵌入了一个地图,如何设置使其“map_canvas”在标签下的宽度和高度都达到100%? ... [详细]
  • 本文详细探讨了使用纯JavaScript开发经典贪吃蛇游戏的技术细节和实现方法。通过具体的代码示例,深入解析了游戏逻辑、动画效果及用户交互的实现过程,为开发者提供了宝贵的参考和实践经验。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文探讨了如何通过预处理器开关选择不同的类实现,并解决在特定情况下遇到的链接器错误。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文探讨如何在VueJS项目中通过配置vue.config.js文件实现多页面应用(MPA),特别是针对管理端和客户端的不同需求。 ... [详细]
  • 本文介绍了一个灵活且功能强大的 JavaScript 日期格式化函数,该函数支持多种日期和时间格式的自定义输出。 ... [详细]
  • 本文探讨了在网站编辑器中使用JavaScript实现优酷视频播放器自适应宽度的方法。尽管尝试过多种CSS解决方案,但都存在一定的局限性,因此最终决定采用JavaScript来动态调整视频播放器的尺寸。 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
author-avatar
胡宸宸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有