javascript - React 组件分解策略
问题描述
我需要在 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>
);
}
但是我应该避免所有这些布局 div 并使布局更干净吗?
一个明显的选择是进入单独的组件布局内容。
谢谢
解决方案
关于分解组件的指南:
当您的组件做得太多时。理想情况下,组件应该专注于做一件(或几件,但不是很多)事情。最明显的迹象是代码中的行数变得太长。粗略估计,组件不应超过 300 行。
当您想跨多个父组件重用组件时,您必须将它们分解。
如果您想通过 优化组件的
render()
特定子树shouldComponentUpdate()
,那么您必须将它们分解,因为您只能shouldComponentUpdate()
在组件级别实现。将数据获取逻辑与渲染和处理用户交互逻辑分开。不要让一个组件同时进行数据获取和(渲染和处理用户交互),而是将它们分解为更小的组件,以便您可以单独测试这些组件:
- 测试第一个组件是否获取数据。
- 测试第二个组件是否正确呈现数据并且可以响应用户交互。
- 在此处阅读有关它的更多信息
Kent C. Dodds在这里提供了更多好的答案。
推荐阅读
- terraform - Terraform:如何在创建 VM 时使用目录名称
- oracle - 查找具有特定条件的表 - Oracle 12c
- java - android 通过 Skype 与 ACTION_SEND 共享内容(文本+图像),仅共享图像而不共享文本
- spring-boot - 在 Spring Boot Data JPA Rest API 中使用 PostgreSql 时找不到表错误
- python - selenium.common.exceptions.ElementClickInterceptedException:消息:元素点击被拦截:元素此时不可点击
- android - 模型未在我的 arcore 应用程序中呈现?
- kotlin - 在 Map 上按值谓词查找的惯用方式
- html - 显示 Firebase 函数的返回值
- python - curl命令在centos服务器上不起作用
- java - 如何在android上设置tflite模型输入张量和输出张量?