React组件应该如何封装?


 
 

翻译:刘小夕

原文链接:https://dmitripavlutin.com/7-architectural-attributes-of-a-reliable-react-component/

原文的篇幅非常长,不过内容太过于吸引我,还是忍不住要翻译出来。此篇文章对编写可重用和可维护的React组件非常有帮助。但因为篇幅实在太长,我对文章进行了分割,本篇文章重点阐述  封装。因本人水平有限,文中部分翻译可能不够准确,如果您有更好的想法,欢迎在评论区指出。

更多文章可戳:  https://github.com/YvetteLau/Blog


封装

一个封装组件提供 props 控制其行为而不是暴露其内部结构。

耦合是决定组件之间依赖程度的系统特性。根据组件的依赖程度,可区分两种耦合类型:

松耦合是我们设计应用结构和组件之间关系的目标。

松耦合应用(封装组件)

640?wx_fmt=jpeg

松耦合会带来以下好处:

相反,紧耦合的系统会失去上面描述的好处。主要缺点是很难修改高度依赖于其他组件的组件。即使是一处修改,也可能导致一系列的依赖组件需要修改。

紧耦合应用(组件无封装)

640?wx_fmt=jpeg

封装信息隐藏 是如何设计组件的基本原则,也是松耦合的关键。

信息隐藏

封装良好的组件隐藏其内部结构,并提供一组属性来控制其行为。

隐藏内部结构是必要的。其他组件没必要知道或也不依赖组件的内部结构或实现细节。

React 组件可能是函数组件或类组件、定义实例方法、设置 ref、拥有 state 或使用生命周期方法。这些实现细节被封装在组件内部,其他组件不应该知道这些细节。

隐藏内部结构的组件彼此之间的依赖性较小,而降低依赖度会带来松耦合的好处。

通信

细节隐藏是隔离组件的关键。此时,你需要一种组件通信的方法:propsporps 是组件的输入。

建议 prop 的类型为基本数据(例如,stringnumberboolean):

<Message text="Hello world!" modal={false} />;false} />;

必要时,使用复杂的数据结构,如对象或数组:


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您分享一下如何封装React Modal组件。 首先,您需要安装React Modal组件库。可以通过以下命令进行安装: ``` npm install react-modal ``` 接下来,您可以创建一个Modal组件并在其中封装React Modal。在组件中,您需要定义一个状态来控制Modal的显示和隐藏。这个状态可以使用useState钩子来实现。 ``` import React, { useState } from "react"; import Modal from "react-modal"; function MyModal(props) { const [isOpen, setIsOpen] = useState(false); const handleOpenModal = () => { setIsOpen(true); }; const handleCloseModal = () => { setIsOpen(false); }; return ( <> <button onClick={handleOpenModal}>打开模态框</button> <Modal isOpen={isOpen} onRequestClose={handleCloseModal} contentLabel="Modal" > <h2>这是一个模态框</h2> <p>这里可以放置模态框的内容</p> <button onClick={handleCloseModal}>关闭模态框</button> </Modal> </> ); } export default MyModal; ``` 在上面的示例中,我们定义了一个MyModal组件,并在其中封装React Modal。我们使用useState钩子来定义了一个名为isOpen的状态,它用于控制Modal的显示和隐藏。handleOpenModal和handleCloseModal函数分别用于打开和关闭Modal。我们在Modal组件中传递了三个props:isOpen,onRequestClose和contentLabel。isOpen用于控制Modal的显示和隐藏,onRequestClose用于在用户点击Modal外部时关闭Modal,contentLabel用于给Modal添加一个描述。 最后,我们在组件的返回值中渲染了一个按钮和一个Modal。我们将handleOpenModal函数绑定到按钮的onClick事件上,以便在单击按钮时打开Modal。我们在Modal中渲染了一些内容,并将handleCloseModal函数绑定到关闭按钮的onClick事件上,以便在单击关闭按钮时关闭Modal。 这样,您就可以使用封装好的Modal组件在您的React应用程序中创建模态框了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值