⚛️ React 开发最佳实践

2022-07-26 23:00:17 +08:00
 nanxiaobei

非常基础非常初级非常幼稚的 React 开发看了想打人的 React 开发最佳实践,但我保证每个大公司都有这样的代码,所有的屎山项目都是这么累计起来的而且大家不以为意。

  1. 多层 props 传递,保持命名一致
    onChangeonChangeonChange
    onChangehandleChangechange

  2. 若对函数包装后传递,保持命名不一致
    onChangeonTextChange = () => { onChange() }onTextChange
    onChangeonChange = () => { props.onChange() }onChange

  3. 保持命名简洁
    onChange
    handleChange

  4. 保持命名明确
    onChange paginationTotal
    change pagiTotal

  5. 传递不同组件的 props ,保持前缀区分
    tableColumns tableLoading btnType btnText
    columns loading type text

  6. 将 props 按照一定的规则排序,例如 UI 中出现顺序、或变量类型、或重要程度等

  7. 保持文件与目录的命名,单复数符合常规
    common config components utils
    commons configs component util

  8. ''0 在 jsx 中一定要做判断
    val !== '' && 123 val !== 0 && 123
    val && 123

  9. 保持文件、文件夹大小写一致
    ShopList ShopDetail
    shop-list ShopDetail

  10. 保持文件夹命名与 url 对应
    /Shop/List.jsx/shop
    /BestShop/List.jsx/shop

  11. 保持文件夹层级与 url 一致
    /Shop/A.jsx/shop/a/Shop/B.jsx/shop/b
    /Shop/A.jsx/shop/a/Shop/Center/B.jsx/shop/b

  12. 理清文件、文件夹设置逻辑,尽量减少数目,思考是否有必要新增

8595 次点击
所在节点    React
82 条回复
Mark24
2022-07-26 23:01:18 +08:00
不用 Hooks ✅
Bijiabo
2022-07-26 23:05:08 +08:00
赞,有心
Aloento
2022-07-26 23:38:46 +08:00
不用 Hooks ✅
adjusted
2022-07-26 23:44:47 +08:00
``` javascript
onChange={handleChange}
onTextChange={handleTextChange}
```
beginor
2022-07-26 23:51:43 +08:00
ShopList ShopDetail ❌
shop-list ShopDetail ✅
ylual
2022-07-27 00:02:14 +08:00
@Aloento 用 Hooks 怎么了呢
Bijiabo
2022-07-27 00:17:41 +08:00
延伸一下第 8 条,尽可能让判断条件意义明确:

```js
if (val !== '' && val !== 0 && val === ‘xxx’) {...} ❌
var isXXXScenario = val !== '' && val !== 0 && val === ‘aaaa’; if (isXXXScenario) {…} ✅

```
JounQin
2022-07-27 00:19:23 +08:00
All in hooks.
HFX3389
2022-07-27 01:40:16 +08:00
@Mark24 #1
@Aloento #3
公司强制要求 Hooks+函数式开发
iseki
2022-07-27 01:45:35 +08:00
不用 class 组件 ✅
Aloento
2022-07-27 01:55:35 +08:00
@ylual 我只是一个复读机
Leviathann
2022-07-27 01:58:07 +08:00
官方示例就是方法叫 handle ,参数叫 on
huijiewei
2022-07-27 07:13:22 +08:00
不用 class 组件 ✅
bthulu
2022-07-27 08:11:39 +08:00
4. 保持命名明确, 你这一点都不 js. 多看看 nodejs 组件命名和第三方命名, 能用一个字符命名的, 绝对不要用两个字符. 能用缩写的绝对不要用全称.
bthulu
2022-07-27 08:15:16 +08:00
8. '' 与 0 在 jsx 中一定要做判断. 你写着一坨又臭又长. js 是干嘛的? 是脚本语言, 是解释型语言, 不是编译型语言. 你写成裹脚布那样又臭又长, 你还用什么 js, 去用 C#, Java 不好么?
oatw
2022-07-27 08:23:27 +08:00
不用 React ✅
sjhhjx0122
2022-07-27 08:27:30 +08:00
不用 Hooks ✅
beisilu
2022-07-27 08:30:16 +08:00
不写前端✅
AyaseEri
2022-07-27 08:40:17 +08:00
不搞开发✅
anakinsky
2022-07-27 08:45:26 +08:00
不活了✅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868907

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX