非常基础非常初级非常幼稚的 React 开发看了想打人的 React 开发最佳实践,但我保证每个大公司都有这样的代码,所有的屎山项目都是这么累计起来的而且大家不以为意。
多层 props 传递,保持命名一致
onChange
→ onChange
→ onChange
✅
onChange
→ handleChange
→ change
❌
若对函数包装后传递,保持命名不一致
onChange
→ onTextChange = () => { onChange() }
→ onTextChange
✅
onChange
→ onChange = () => { props.onChange() }
→ onChange
❌
保持命名简洁
onChange
✅
handleChange
❌
保持命名明确
onChange
paginationTotal
✅
change
pagiTotal
❌
传递不同组件的 props ,保持前缀区分
tableColumns
tableLoading
btnType
btnText
✅
columns
loading
type
text
❌
将 props 按照一定的规则排序,例如 UI 中出现顺序、或变量类型、或重要程度等
保持文件与目录的命名,单复数符合常规
common
config
components
utils
✅
commons
configs
component
util
❌
''
与 0
在 jsx 中一定要做判断
val !== '' && 123
val !== 0 && 123
✅
val && 123
❌
保持文件、文件夹大小写一致
ShopList
ShopDetail
✅
shop-list
ShopDetail
❌
保持文件夹命名与 url 对应
/Shop/List.jsx
→ /shop
✅
/BestShop/List.jsx
→ /shop
❌
保持文件夹层级与 url 一致
/Shop/A.jsx
→ /shop/a
、/Shop/B.jsx
→ /shop/b
✅
/Shop/A.jsx
→ /shop/a
、/Shop/Center/B.jsx
→ /shop/b
❌
理清文件、文件夹设置逻辑,尽量减少数目,思考是否有必要新增
1 Mark24 21 小时 54 分钟前不用 Hooks ✅ |
3 Aloento 21 小时 17 分钟前不用 Hooks ✅ |
4 adjusted 21 小时 11 分钟前 7``` javascript |
5 beginor 21 小时 4 分钟前 via AndroidShopList ShopDetail ❌ |
6 ylual 20 小时 53 分钟前 via iPhone 3 |
7 Bijiabo 20 小时 38 分钟前 3延伸一下第 8 条,尽可能让判断条件意义明确: ```js ``` |
8 JounQin 20 小时 36 分钟前 via iPhone 1All in hooks. |
10 iseki 19 小时 10 分钟前 via Android 14不用 class 组件 ✅ |
12 Leviathann 18 小时 57 分钟前 2官方示例就是方法叫 handle ,参数叫 on |
14 bthulu 12 小时 44 分钟前4. 保持命名明确, 你这一点都不 js. 多看看 nodejs 组件命名和第三方命名, 能用一个字符命名的, 绝对不要用两个字符. 能用缩写的绝对不要用全称. |
15 bthulu 12 小时 40 分钟前8. '' 与 0 在 jsx 中一定要做判断. 你写着一坨又臭又长. js 是干嘛的? 是脚本语言, 是解释型语言, 不是编译型语言. 你写成裹脚布那样又臭又长, 你还用什么 js, 去用 C#, Java 不好么? |
16 oatw 12 小时 32 分钟前不用 React ✅ |
21 sechi 12 小时 7 分钟前不用电脑✅ |
23 plk403 12 小时 0 分钟前不上 V2✅ |
24 vivipure 11 小时 50 分钟前all in hooks |
25 zed1018 11 小时 38 分钟前不用 axios ✅ |
26 Lyv5 11 小时 31 分钟前我们都是菜狗✅ |
27 kangyan 11 小时 27 分钟前月经贴了属于是 |
28 ryougifujino 11 小时 27 分钟前 1on 和 handle 命名本来就是都要用的啊。 return ( |
32 christin 10 小时 58 分钟前 1不用 class 组件 ✅ |
33 dont27 10 小时 54 分钟前不改需求✅ |
34 churchill 10 小时 53 分钟前以我个人浅薄的 react 使用经验来说,hooks 是 react 用起来最舒服的特性之一 |
36 NTZONE 10 小时 48 分钟前最让我疑惑的句式之一就是最...之一,我认为「最」和「之一」是矛盾的。 |
38 yuuko 10 小时 45 分钟前换 Solidjs |
39 lmshl 10 小时 41 分钟前All in hooks ✅ |
40 kongkx 10 小时 39 分钟前 via iPhone保持一致性就好了,注意命名规范,没那么多条条框框 |
41 Oktfolio 10 小时 38 分钟前 1换 Angular✅ |
42 qiumaoyuan 10 小时 29 分钟前其实你们所谓的“屎山”跟这些所谓的规范关系不大。屎的主要来源是重复代码,完。 |
43 avv 10 小时 22 分钟前竟然没人提 VUE✅ |
47 sjhhjx0122 9 小时 56 分钟前@churchill 不够直观,每个人你不知道他的水平,接手别人的代码,每个 hook 都要点进去从头到尾看一遍,hook 看似很美好,但是纯函数的组件我写起来就觉得奇怪,好像有洁癖一样的组件和 hook 要纯洁单一,但是写业务的时候没法纯洁单一,每次为了代码看起来整洁一点,抽了一堆 hook 出来,结果没整洁反而更奇怪了,不过也可能是我 angular 写习惯了 |
50 v2pxpx 9 小时 14 分钟前 1不用 React ✅ |
51 v2pxpx 9 小时 12 分钟前@qiumaoyuan 我认为的”屎“,是简洁。你可以通过一种更加简洁的代码实现相同的功能,不仅仅是代码量 |
53 mingdongshensen 8 小时 1 分钟前作为初学者,觉得 hook 挺不错的,第三方库的 hook 都设计的挺好用起来也方便,自定义 hook 写不太多,大家不想用 hook 可能是因为自定义 hook 设计难度? |
55 zxCoder 7 小时 50 分钟前不用 jsx✅ |
56 hzjseasea 7 小时 8 分钟前最近正在学习 react ,很好奇为啥不用 hooks..... |
57 bzw875 7 小时 1 分钟前用不用 Hooks 听老板的,我都行 |
59 w6a 6 小时 27 分钟前用 JQuery ✅ |
60 vampuke 5 小时 53 分钟前想问问第 8 条 |
61 vampuke 5 小时 52 分钟前@vampuke 必要性是什么 |
63 ada87 5 小时 6 分钟前(严肃)我有一个真问题,在此处问求解惑: 为什么看到所有地方都是 return (<div></div>) 这样的? |
64 MonkeyD1 4 小时 58 分钟前@ada87 你 div 里面代码够多的时候肯定要换行的, 总不能 |
65 g0thic 4 小时 54 分钟前第一个就不同意了 事件用 handle 参数用 on |
66 bthulu 4 小时 51 分钟前@lankunblue 比如说 nodejs 里的 fs, 为啥用 fs, 而不用 fileSystem 呢? 比如说 lodash, 为啥用_, 而不用全名 lodash 呢? 比如 jquery 为啥都用$不用 jQuery? |
67 xingyuc 4 小时 50 分钟前大多数都是命名问题,如果你要求不了团队,那就忍着,这和 react 有什么关系 |