System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种React组件动态切换方法及终端技术_技高网

一种React组件动态切换方法及终端技术

技术编号:44076776 阅读:16 留言:0更新日期:2025-01-17 16:11
本发明专利技术公开了一种React组件动态切换方法与终端,获取页面的组件切换请求,向切换组件传入待切换的目标组件的标识信息,并进行预处理;所述切换组件基于React的cloneElement方法,且当前页面中的所有可切换组件均由所述切换组件的标签包裹;所述切换组件根据所述目标组件的标识信息,确认目标组件的状态属性;克隆所述目标组件,注入所述状态属性并生成实例,对所述可切换组件进行渲染显示;本发明专利技术基于cloneElement方法进行组件动态切换,通过封装组件切换代码,统一对外接口,实现将业务代码和组件切换代码的区分,各页面复用同一套切换代码,从而提升代码质量、提高代码可读性和可维护性,节省开发人员时间,加快开发效率。

【技术实现步骤摘要】

本专利技术涉及web前端应用,特别涉及一种react组件动态切换方法及终端。


技术介绍

1、分而治之是软件工程的重要思想,是复杂系统开发和维护的基石,而前端目前的模块化和组件化都是基于分而治之的思想。组件化是react的核心思想,一个react页面通常是由各种组件拼装而成的。由于使用场景不同,一个页面经常需要根据用户的操作切换不同的组件。

2、一个常规的组件切换流程如图1所示。要实现组件切换,首先需要初始化相关的状态。比如初始化默认显示的组件,初始化传入组件中的参数等等。在一个页面中,可以通过多种操作触发切换事件。比如用户点击某个按钮来切换组件,或者是通过url地址栏的参数来切换组件等。在切换组件之前,通常需要做一些预处理操作。比如需要清理将要隐藏的组件,需要为将要显示的组件设置初始值等。在预处理操作完成后,才开始切换组件。所谓的切换组件,就是指在一批组件中,按要求显示某个组件,隐藏其他组件。最后在页面中渲染出指定的组件。

3、目前常规的做法是通过react的状态机制控制页面的渲染更新,通过react的事件机制响应用户的操作。接着在对应的事件处理方法中先进行切换预处理,再修改组件的显示状态。最后在渲染的时候,根据组件的显示状态设置对应的css属性,从而控制组件是否显示。

4、如图2所示,在图2所示代码中,第6行-第10行用于组件切换的初始化设置。其中第6行代码通过view状态变量保存当前要显示的组件id。第7行-第10行代码通过componentsdata状态变量保存组件的初始化数据。

5、第12行-第30行是一个点击事件的响应方法。它绑定到第34行的切换按钮中,当点击该按钮时react会自动执行该方法。在该方法内部,第13行代码先获取下一个要显示的组件id。第15行-第27行代码在切换组件前对组件进行预处理。该预处理操作主要是清除当前组件数据和设置下一个组件的数据。最后,第29行代码更新当前要显示组件的id。

6、第36行-第43行代码用于渲染组件。为了能够控制component1和component2的显示状态,且不侵入这两个组件,我们使用额外的div标签包裹这两个组件。根据view状态变量设置包裹div标签的style属性,从而控制目标组件的显示或隐藏,实现组件的切换效果。

7、常规的组件切换方案具有如下缺点:

8、1、切换的相关代码与其他业务代码混在一起,可读性差,不易维护。

9、2、每个需要组件切换功能的页面中,都需要编写类似的代码,导致页面代码比较臃肿。

10、3、开发人员水平不一,同样的功能,不同水平的开发人员编写的代码千差万别。即便是同一个开发人员,在不同页面中编写同样的切换功能,代码也有细微的差别。这也导致了代码质量不高,难以维护。图2中所示的代码已经是经过优化后的最佳实践代码,代码比较精简、流程比较清晰。


技术实现思路

1、本专利技术所要解决的技术问题是:提供一种react组件动态切换方法与终端,在实现react组件动态切换的同时,代码更加易于维护。

2、为了解决上述技术问题,本专利技术采用的技术方案为:

3、一种react组件动态切换方法,包括步骤:

4、s1、获取页面的组件切换请求,向切换组件传入待切换的目标组件的标识信息,并进行预处理;

5、所述切换组件基于react的cloneelement方法,且当前页面中的所有可切换组件均由所述切换组件的标签包裹;

6、s2、所述切换组件根据所述目标组件的标识信息,确认目标组件的状态属性;

7、s3、克隆所述目标组件,注入所述状态属性并生成实例,对所述可切换组件进行渲染显示。

8、为了解决上述技术问题,本专利技术采用的另一种技术方案为:

9、一种react组件动态切换终端,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

10、s1、获取页面的组件切换请求,向切换组件传入待切换的目标组件的标识信息,并进行预处理;

11、所述切换组件基于react的cloneelement方法,且当前页面中的所有可切换组件均由所述切换组件的标签包裹;

12、s2、所述切换组件根据所述目标组件的标识信息,确认目标组件的状态属性;

13、s3、克隆所述目标组件,注入所述状态属性并生成实例,对所述可切换组件进行渲染显示。

14、本专利技术的有益效果在于:本专利技术的一种react组件动态切换方法与终端,通过定义一个基于react的cloneelement方法的切换组件,对可切换组件进行克隆和状态属性注入,并实现对可切换组件的渲染显示,即基于cloneelement方法进行组件动态切换,通过封装组件切换代码,统一对外接口,实现将业务代码和组件切换代码的区分,各页面复用同一套切换代码,各开发人员使用同一套切换逻辑,从而提升代码质量、提高代码可读性和可维护性,节省开发人员时间,加快开发效率。

本文档来自技高网
...

【技术保护点】

1.一种React组件动态切换方法,其特征在于,包括步骤:

2.根据权利要求1所述的一种React组件动态切换方法,其特征在于,所述切换组件采用React Component方式实现。

3.根据权利要求2所述的一种React组件动态切换方法,其特征在于,当前页面中通过的所有可切换组件均由所述切换组件的标签包裹具体为:预先通过所述切换组件的组件标签包裹当前页面的所有可切换组件,使程序运行时所述可切换组件作为children属性传入所述切换组件中,使所述切换组件能够基于cloneElement方法克隆所述可切换组件并注入所述状态属性。

4.根据权利要求3所述的一种React组件动态切换方法,其特征在于,所述可切换组件传入所述切换组件中时,通过排列方法将所述可切换组件形成数组。

5.根据权利要求1所述的一种React组件动态切换方法,其特征在于,步骤S3具体为:

6.一种React组件动态切换终端,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤

7.根据权利要求6所述的一种React组件动态切换终端,其特征在于,所述切换组件采用React Component方式实现。

8.根据权利要求7所述的一种React组件动态切换终端,其特征在于,当前页面中通过的所有可切换组件均由所述切换组件的标签包裹具体为:预先通过所述切换组件的组件标签包裹当前页面的所有可切换组件,使程序运行时所述可切换组件作为children属性传入所述切换组件中,使所述切换组件能够基于cloneElement方法克隆所述可切换组件并注入所述状态属性。

9.根据权利要求8所述的一种React组件动态切换终端,其特征在于,所述可切换组件传入所述切换组件中时,通过排列方法将所述可切换组件形成数组。

10.根据权利要求6所述的一种React组件动态切换终端,其特征在于,步骤S3具体为:

...

【技术特征摘要】

1.一种react组件动态切换方法,其特征在于,包括步骤:

2.根据权利要求1所述的一种react组件动态切换方法,其特征在于,所述切换组件采用react component方式实现。

3.根据权利要求2所述的一种react组件动态切换方法,其特征在于,当前页面中通过的所有可切换组件均由所述切换组件的标签包裹具体为:预先通过所述切换组件的组件标签包裹当前页面的所有可切换组件,使程序运行时所述可切换组件作为children属性传入所述切换组件中,使所述切换组件能够基于cloneelement方法克隆所述可切换组件并注入所述状态属性。

4.根据权利要求3所述的一种react组件动态切换方法,其特征在于,所述可切换组件传入所述切换组件中时,通过排列方法将所述可切换组件形成数组。

5.根据权利要求1所述的一种react组件动态切换方法,其特征在于,步骤s3具体为:

6.一种react组件动态切换终端,包括处理器、存...

【专利技术属性】
技术研发人员:刘德建何春霖陈宏
申请(专利权)人:福建天泉教育科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1