Javascript 反应组件分解策略
我需要在React上实现组件树 我想知道什么是足够好的模式,如何打破树上的一切 但考虑到可伸缩性(代码或团队) 通常我使用下一种方式:Javascript 反应组件分解策略,javascript,reactjs,components,Javascript,Reactjs,Components,我需要在React上实现组件树 我想知道什么是足够好的模式,如何打破树上的一切 但考虑到可伸缩性(代码或团队) 通常我使用下一种方式: function UserAvatar(props) { return <div><img src="" alt="" /></div> } function UserEmail(props) { return <div>e-mail: some@email.com</div> }
function UserAvatar(props) {
return <div><img src="" alt="" /></div>
}
function UserEmail(props) {
return <div>e-mail: some@email.com</div>
}
function UserSection(props) {
return (
<div className="container">
<div className="section">
<UserAvatar />
</div>
<div className="section">
<UserEmail />
</div>
</div>
);
}
功能用户化身(道具){
返回
}
功能用户电子邮件(道具){
返回电子邮件:some@email.com
}
功能用户部分(道具){
返回(
);
}
但我应该避免所有这些布局div并使布局更干净吗
一个明显的选择是进入单独的组件布局
谢谢将每个
组件
保存在各自的文件中,然后将其导入需要引用的位置,这是一种很好的做法
此外,在您的示例中,您很可能需要将化身url和电子邮件设置为道具。然后让UserAvatar
和UserEmail
呈现这些值。另外,设置道具类型也是一种很好的做法,这样其他开发人员(和您自己)就知道应该传递哪些道具
将组件分解为子组件的一个标准是,当组件处理不同的问题时,或者当文件大小变得太大时。另一个标准是当您需要在其他上下文中重用该组件时
希望这能有所帮助。最好将每个
组件保存在自己的文件中,然后将其导入需要引用的位置
此外,在您的示例中,您很可能需要将化身url和电子邮件设置为道具。然后让UserAvatar
和UserEmail
呈现这些值。另外,设置道具类型也是一种很好的做法,这样其他开发人员(和您自己)就知道应该传递哪些道具
将组件分解为子组件的一个标准是,当组件处理不同的问题时,或者当文件大小变得太大时。另一个标准是当您需要在其他上下文中重用该组件时
希望这能有所帮助。有关分解组件的指南:
当您的组件做得太多时。理想情况下,组件应该专注于做一件(或几件,但不是很多)事情。最明显的迹象是代码中的行数过长。粗略估计,组件不应超过300行
当您希望跨多个父组件重用组件时,必须将它们分解
如果要通过shouldComponentUpdate()
优化组件特定子树的render()
,则必须将它们分解,因为只能在组件级别实现shouldComponentUpdate()
将数据获取逻辑与呈现和处理用户交互逻辑分离。不要让一个组件同时执行数据获取和(呈现和处理用户交互)操作,而是将它们分解为更小的组件,以便您可以单独测试组件:
- 测试第一个组件是否获取数据
- 测试第二个组件是否正确呈现数据,并能够响应用户交互
- 阅读更多关于它的信息
Kent C.Dodds提供了更多的好答案。关于分解组件的指南:
当您的组件做得太多时。理想情况下,组件应该专注于做一件(或几件,但不是很多)事情。最明显的迹象是代码中的行数过长。粗略估计,组件不应超过300行
当您希望跨多个父组件重用组件时,必须将它们分解
如果要通过shouldComponentUpdate()
优化组件特定子树的render()
,则必须将它们分解,因为只能在组件级别实现shouldComponentUpdate()
将数据获取逻辑与呈现和处理用户交互逻辑分离。不要让一个组件同时执行数据获取和(呈现和处理用户交互)操作,而是将它们分解为更小的组件,以便您可以单独测试组件:
- 测试第一个组件是否获取数据
- 测试第二个组件是否正确呈现数据,并能够响应用户交互
- 阅读更多关于它的信息
肯特·C·多德的许多好答案