Javascript 反应组件分解策略

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> }

我需要在React上实现组件树

我想知道什么是足够好的模式,如何打破树上的一切 但考虑到可伸缩性(代码或团队)

通常我使用下一种方式:

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·多德的许多好答案