没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:王香|2018-10-23 09:56:19.000|阅读 338 次
概述:在React应用程序中学习一些有关使用State的快速和重要提示,以帮助您确定哪种选项,适合您的环境。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
下载Telerik UI for ASP.NET AJAX最新版本
在React应用程序中学习一些有关使用State的快速和重要提示,以帮助您确定哪种选项,适合您的环境。
首先,如果您是React的新用户,或者开始使用新的React应用程序,请从React的内置状态功能开始。除非你完全确定新的应用程序将成为一个复杂的庞然大物,否则就要抵制从州管理解决方案开始的冲动。我提出这个建议有两个原因。首先,如果你是React的新手,你应该在引入外部依赖之前专注于学习React的细节。Redux和MobX很棒,但是在学习React的同时学习状态解决方案不仅会使你的学习曲线变得陡峭,而且会使你对两者的理解变得混乱。熟悉React,然后,当时机成熟时,再添加一块拼图。
您正在构建的应用程序可能会保持很长时间,并且您可能会发现setState()是处理组件内部和组件之间的UI更改的良好解决方案。那么什么时候考虑将Redux或MobX添加到您的应用中?
没有硬性规定。复杂性倾向于蔓延到我们的应用程序中并突然停止。当您发现自己一次又一次地在组件之间传递状态或者在级别之后冒出子组件状态级别以便父级或更高级组件可以使用该状态时,您将知道它是时候找到解决方案了。
Redux和MobX都围绕实现一个或多个商店来管理状态的原则进行组织。然后,组件将状态更改分派给这些存储,并在需要访问状态时订阅状态更改。这些模式为您的应用程序带来了间接性和复杂性,但是当您的应用程序本身的状态变得复杂时,最好选择其中一种。
最后,如果您决定实施状态管理解决方案,请在某些情况下随时继续使用setState()。 考虑一下:在子组件中按下一个按钮来更新该组件的UI但是在层次结构的其他地方没有影响真的需要进入状态存储吗? 可能不是。
我第一次实现Redux时犯的错误之一是将所有内容放入Redux存储库,为每个UI更改创建操作和缩减器。这有其自身形式的爬行复杂性,如果不加以控制,可能会让您想知道您是否曾经需要一个状态管理解决方案。 很多时候,即使使用Redux或MobX等解决方案,也可以继续使用本地组件状态。我个人的经验法则是使用完全独立的本地状态UI交互,或者使用可移植的组件,因此不依赖于全局存储。
示例:在最近的项目中,我们创建了一个Map组件,该组件在应用程序的多个位置使用,以显示事件详细信息,当前位置等。组件依赖于状态(通过Props)显示它所显示的数据,但我们使用本地状态来管理内部状态,例如选择了哪个映射引脚,以及是否应显示信息窗口。构造函数看起来像这样:
class Map extends Component { constructor (props) { super(props) this.state = { showingInfoWindow: false, activeMarker: null, selectedPlace: {}, map: null } } onMarkerClick (props, marker, e) { this.setState({ selectedPlace: props, activeMarker: marker, showingInfoWindow: true }) } onInfoWindowClose () { this.setState({ showingInfoWindow: false, activeMarker: null }) } onMapClicked (props) { if (this.state.showingInfoWindow) { this.setState({ showingInfoWindow: false, activeMarker: null }) } } onMapReady (mapProps, map) { const { agency, languageCode } = this.props this.setState({ map: map }) if (agency) { const assignees = agency.details.assignees if (assignees.regions) { assignees.contract.map(region => { // Do things }) } } } }
底线:可以使用本地状态,特别是如果它可以帮助您保持全球状态清洁和有条理。 在开始一个新的React应用程序时,无论你是React新手还是经验丰富的专业人士,都可以尝试从跳转中添加状态管理解决方案。不过,在此之前,请记住YAGNI并考虑等到时机成熟。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
二维码正成为越来越流行的信息存储和共享工具。在报告和文档中,二维码可用于快速访问网站、联系人、产品信息等。
本文主要介绍如何使用DevExpress WPF Grid控件的创建栏(Bands),欢迎下载最新版组件体验!
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
DeepSeek AI 现已集成到 ONLYOFFICE 编辑器中,通过先进的 AI 功能提高工作效率。在本文中,我们将探讨如何在 ONLYOFFICE 编辑器中使用可用的 DeepSeek 模型以及如何将它们连接到编辑器。
全新升级的Kendo UI,是创建数据丰富的Web应用程序的最完整UI库。
Kendo UI for jQuery完整的jQuery UI组件库,可快速构建出色的高性能响应式Web应用程序。
Kendo UI for Angular完整的Angular UI组件库,助力构建高性能的现代Angular应用。
Kendo UI Support for React支持React Javascript框架,更快地构建更好的应用程序。
Kendo UI for Vue创建响应式Web应用的完整UI组件库。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢