代码规范
总结
- 组件命名必须以大写字母开头,而 HTML 标签则必须是小写字母。
- 禁止嵌套组件
- 必须闭合标签
- 使用map时必须添加key
官方规范
组件命名
首字母必须大写
const root = ReactDOM.createRoot(document.getElementById('root'));
/* 函数组件命名 */
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
const element = <Welcome name="Sara" />;
root.render(element);
禁止使用嵌套组件
禁止组件中再使用函数来定义组件
export default function Gallery() {
// 🔴 永远不要在组件中定义组件
function Profile() {
// ...
}
// ...
}
export default function Gallery() {
// ...
}
// ✅ 在顶层声明组件
function Profile() {
// ...
}
setState()
频繁调用
React从16.3版本开始引入了新的生命周期方法和setState
的异步更新,这可以被认为是对setState
的一种优化。在此之前,每次调用setState
都会导致组件重新渲染,这可能会导致不必要的性能开销。
在React 16.3及以后的版本中,当在事件处理函数或其他的异步回调中调用setState
时,React会批量更新以提高性能。这意味着如果你多次调用setState
,React会将这些更新合并到一起,然后只触发一次重新渲染。这种优化可以减少不必要的渲染,从而提高应用程序的性能。
如果你不能确定使用的React是最新版,或者旧项目需要优化的情况下,请确保setState()
频繁调用的问题,常见的解决方案是对不同字段先进行分别处理,最后再一次性使用setState({xxx:xxx, xxx:xxx, ...})
的方式进行批量更新
总的来说,React从16.3版本开始对setState
进行了优化,通过引入新的生命周期方法、异步更新和Hooks等特性,提高了React应用程序的性能和可维护性。
所有标签必须闭合
// 不合法
<br>
// 合法
<br />
// 合法
<br></br>
// 合法 - 使用空标签包裹
<><br></>