开发优秀写法
方法内声明变量
注意数据不可变性
const items = useMemo(() => {
const _items = [deps, ...add];
return _items;
}, [deps, add]);
用箭头函数分隔代码
jsx 中的函数会自动执行
<div>
{() => {
return <span>1</span>;
}}
</div>
Form.field 的 Children 一般可以直接非受控
因为该组件对 children 有拦截,如果是函数会传入参数
<Form.field>
{(value, onChange) => {
return <span>{value}</span>;
}}
</Form.field>
正则表达式在外部创建
const reg = /111/;
const fc = () => {};
多个条件判断可以改为数组
const EMPTY = [null, undefined, ""];
if (EMPTY.includes(a)) {
}
react 不推荐使用&&条件渲染
condition && <Component />;
大部分情况下&&都会生效,但是当第一个值不是 Boolean 类型时,就会出现问题
-
如果 condition 为 0 ,则在 UI 中显示为 0
-
如果 condition 未定义,将会抛出错误:未捕获的错误:错误:没有从渲染返回
不渲染应返回 null
condition ? <Component /> : null;
或者转化为 boolean 类型,但是可读性较差
常用
!!condition && <Component />;
再举个例子
console.log(0 ? 1 : 2); // 2
console.log(0 && 2); // 0
利用对象字面量(map)
对象字面量可以使代码更具有可读性,假如想根据角色显示三种类型用户,不能使用三元, 因为选项数量超过两个
而用 switch 写起来比较麻烦
const { role } = user;
// 对象字面量
const compoents = {
ADMIN: Administer,
EMPLOYEE: EmployeeUser,
USER: NormalUser,
};
const Component = components[role];
return <Component />;
使用 Fragments 语法
始终使用 Fragments 而不是 div
保持代码整洁且有利于性能
<></>
不要在渲染 render 中定义函数
定义变量可能会有闭包风险 但是函数完全可以定义在渲染外,防止重复渲染的性能消耗
组件命名
始终对组件使用 PascalCase (首字母大写)
对实例使用 CamelCase
import ReservationCard from "./ReservationCard";
const resevrvationItem = <ReservationCard />;