V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iszengmh
V2EX  ›  React

为什么我感觉 react 很难学

  •  
  •   iszengmh · 2024-03-11 16:48:26 +08:00 · 12540 次点击
  •   查看本主题需要登录
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    感觉官方文档写得也不清不楚的,生命周期这个概念也在其他书籍看到,感觉 bug 很调试

    91 条回复    2024-12-22 13:32:49 +08:00
    erzong
        1
    erzong  
       2024-03-11 16:51:57 +08:00
    是看的最新的官网吗
    xingguang
        2
    xingguang  
       2024-03-11 16:53:03 +08:00
    直接 react.dev 看 hooks 实现,生命周期太难记啦
    streamrx
        3
    streamrx  
       2024-03-11 16:55:21 +08:00 via iPhone
    早就没有生命周期了
    yKXSkKoR8I1RcxaS
        4
    yKXSkKoR8I1RcxaS  
       2024-03-11 16:56:04 +08:00   ❤️ 6
    很恶心在 JS 里写 HTML 的这种写法,就像在 HTML 里写 PHP 一样,很傻 X
    MRG0
        5
    MRG0  
       2024-03-11 16:57:02 +08:00
    我我觉得最快的学习方法就是参与到相关项目里,很快就能掌握基本使用
    BaiLinfeng
        6
    BaiLinfeng  
       2024-03-11 16:59:23 +08:00
    @Seria 有道理
    8863824
        7
    8863824  
       2024-03-11 17:01:34 +08:00
    这个已经算简单的东东了,哈哈
    vczyh
        8
    vczyh  
       2024-03-11 17:03:24 +08:00   ❤️ 2
    @Seria 我感觉这个写多了反而很爽,JS 的能力就是 JSX 的能力
    iOCZS
        9
    iOCZS  
       2024-03-11 17:06:20 +08:00
    类组件的话重新渲染只是调用 render 函数,render 函数里用到的东西本身还在类里,没有重新创建,所以子组件接收的 props 没变,也就不会重新渲染。函数组件的话,重新渲染是调用函数本身,函数里的本地变量都会重新创建,子组件都会重新渲染,除非采取一些措施。相当于以前是黑名单策略,现在是白名单策略。。。我的一点浅见
    githmb
        10
    githmb  
       2024-03-11 17:08:51 +08:00
    基础不牢,地动山摇
    w4ngzhen
        11
    w4ngzhen  
       2024-03-11 17:09:02 +08:00   ❤️ 1
    @Seria 然而 JSX 和 React 其实没有必然的关系,你完全可以写 React.createElement ,但最后发现构造 UI ,特别是嵌套 UI ,还是类似 JSX 这样的语法糖好用。另外,实际上 React 中的 JSX 标签和 HTML 中的标签,完全是两个东西,只不过为了更接近 HTML 而做的一样。
    lambdaq
        12
    lambdaq  
       2024-03-11 17:09:57 +08:00   ❤️ 3
    jurassic2long
        13
    jurassic2long  
       2024-03-11 17:10:24 +08:00
    所有前端框架都对新手入门极其不友好,各种乱七八糟的配置,一个逻辑要写在多个脚本里
    ZGame
        14
    ZGame  
       2024-03-11 17:11:06 +08:00
    只有你去实现一遍复杂的需求之后,或许你才能理解 React 的好处,或者利用 React 的相关生态...
    gaeco
        15
    gaeco  
       2024-03-11 17:25:59 +08:00
    这玩意不就差不多 js 的写法,看看 hooks ,直接上手写吧
    wu67
        16
    wu67  
       2024-03-11 17:30:05 +08:00
    个人感觉, react 难就难在部分概念有点反直觉. 另外 jsx 你可以不用, 尽量拆分一下 ui 相关代码就行
    mrwangjustsay
        17
    mrwangjustsay  
       2024-03-11 19:43:36 +08:00
    enchilada2020
        18
    enchilada2020  
       2024-03-11 20:01:12 +08:00 via Android
    @Seria 那像 Vue 那种在 HTML 模板里加黑魔法的你能接受吗?总不能像 jQuery 或者 swing 那样吧 岂不是更恶心 现代前端框架的一个重要进步就是声明式写 UI
    yolio2003
        19
    yolio2003  
       2024-03-11 20:07:42 +08:00
    最复杂的是 hooks 的设计,以及刷新的优化,包大小更是无解。
    突破了这些就还挺快乐的。
    wazggcd
        20
    wazggcd  
       2024-03-11 20:25:56 +08:00 via Android
    @Seria 甚至已经开始在 js 里写 css ,体验还挺好😂😂😂
    summerwar
        21
    summerwar  
       2024-03-11 20:55:38 +08:00
    有 html css 和 js 基础的话,学起来会比较简单。另外 react 写起来很重要的一点是,把所有情况的视图代码都写出来,然后用一堆状态(开关)来决定什么时候显示什么。我开头没太理解,等理解了之后发现这玩意写起来很简单,爽的很
    wjx0912
        22
    wjx0912  
       2024-03-11 22:19:34 +08:00
    没啥好学的,直接撸项目
    kneo
        23
    kneo  
       2024-03-11 22:26:20 +08:00 via Android
    @Seria html 里写 js ,还是 js 里写 html ?这是个问题。
    LandCruiser
        24
    LandCruiser  
       2024-03-11 22:28:18 +08:00
    react 核心就是四个字,状态提升。其他的都是 api ,记住就可以了。
    leaflxh
        25
    leaflxh  
       2024-03-11 22:59:01 +08:00
    用惯了大差不差

    一开始学 react 不会用 hook 写出一堆 bug ,现在习惯了用的很爽
    最近刚开始看 vue ,也觉得 smjb ,写多了也就明白了
    debuggerx
        26
    debuggerx  
       2024-03-11 23:10:17 +08:00 via Android
    盲猜两个最大的可能性:
    1. 选错了学习资料,看了太多尤其是国内低水平的和过时的教程,导致走的弯路。直接看官网最新教程和示例学习,直接 next.js 上手最简单。
    2. 被已有经验束缚,尤其原来是做原生开发的,转前端写 web 或者转 flutter ,经常出现这个情况,原生开发的那一套模式根深蒂固,各种新概念总想往原生上靠,于是就出现了很多资深原生开发写的类 web 代码甚至还不如学习了同样时间的新手。
    echo0x000001
        27
    echo0x000001  
       2024-03-11 23:18:57 +08:00
    @lambdaq 长见识了,只能说牛皮
    loveDiu4ever
        28
    loveDiu4ever  
       2024-03-11 23:35:44 +08:00
    react 只是恶心 不是难
    maigebaoer
        29
    maigebaoer  
       2024-03-11 23:38:24 +08:00 via Android
    习惯了就不难,加油
    chenliangngng
        30
    chenliangngng  
       2024-03-12 00:29:36 +08:00
    react 只要接受了 babel 运行环境,jsx 和最基本的组件间嵌套,后面都是豁然开朗越学越爽的
    crazyweeds
        31
    crazyweeds  
       2024-03-12 00:31:11 +08:00
    我感觉很爽啊,就是拆拆拆、组组组,搭积木一样。
    laizenan
        32
    laizenan  
       2024-03-12 00:58:12 +08:00
    作为写了 6 年 React 的资深前端,我也觉得 React 很难,至今经常被各种面经考倒……但是入手好像还是挺容易的,生态很好,而且渐进式,啥也不会也可以直接上。上了再慢慢学。
    BwNVlwSq
        33
    BwNVlwSq  
       2024-03-12 01:29:26 +08:00 via iPhone
    上手还是有一点门槛的,熟手以后真的是随心所欲😊
    xiaofan305
        34
    xiaofan305  
       2024-03-12 01:42:01 +08:00 via Android
    因为你的感觉是对的
    vace
        35
    vace  
       2024-03-12 02:15:59 +08:00
    React 是使用者上限与下限差距极大的框架,前期各种概念,后期为所欲为。🤣
    tdgpd13
        36
    tdgpd13  
       2024-03-12 03:27:00 +08:00
    因为就是难学反人类啊,其实前端就那么点东西,但每隔几年就有新的框架轮子出来,螺蛳壳里做道场...
    HaroldFinchNYC
        37
    HaroldFinchNYC  
       2024-03-12 03:56:20 +08:00
    你要是把 es6 先学一学,你两天就能上手 react
    Track13
        38
    Track13  
       2024-03-12 07:17:40 +08:00 via Android
    看看 solidjs 吧。这个简单
    bianhui
        39
    bianhui  
       2024-03-12 08:14:26 +08:00
    可能仅仅是因为,学习能力,理解能力差。不必强求。
    lairdnote
        40
    lairdnote  
       2024-03-12 08:35:10 +08:00
    多写项目吧 不懂就 ai 和 google 查询 然后写 blog
    ccraohng
        41
    ccraohng  
       2024-03-12 09:09:24 +08:00
    js 不行
    dog82
        42
    dog82  
       2024-03-12 09:24:33 +08:00
    vue 更符合国人的思维习惯
    xxmaqzas
        43
    xxmaqzas  
       2024-03-12 09:31:01 +08:00
    直接 next.js,遇到不懂的再去 google
    potatowish
        44
    potatowish  
       2024-03-12 09:38:54 +08:00 via iPhone
    react 官网教程写的就比较清楚,建议看英文版,跟着敲,有基础之后再上 next.js
    thedinosaurmail
        45
    thedinosaurmail  
       2024-03-12 09:48:22 +08:00
    我不喜欢 vue 那种写法,还挺喜欢 react 的写法
    blackcellcode
        46
    blackcellcode  
       2024-03-12 09:51:29 +08:00
    万事开头难呗
    ooo4
        47
    ooo4  
       2024-03-12 09:54:03 +08:00
    最难的是他的 state 要 immutable
    LiuJiang
        48
    LiuJiang  
       2024-03-12 09:56:00 +08:00
    @lambdaq 2015 年的文章,天哪,太牛了
    DICK23
        49
    DICK23  
       2024-03-12 09:56:44 +08:00
    学 react 必须理解帧这个概念,不要纠结于状态不状态的
    LavaC
        50
    LavaC  
       2024-03-12 10:15:28 +08:00
    react 生态很强,但是太复杂了,我选择 solid 。
    xingdaorong
        51
    xingdaorong  
       2024-03-12 10:20:27 +08:00
    类组件基本不用了,直接学 hooks 就行,也就错误捕获需要类组件
    Imindzzz
        52
    Imindzzz  
       2024-03-12 10:23:41 +08:00 via Android
    那前端不适合你,前端就没有难的东西
    sampeng
        53
    sampeng  
       2024-03-12 10:42:00 +08:00
    没啥好学的。。copliot 一路 tab
    gxvsko
        54
    gxvsko  
       2024-03-12 10:53:09 +08:00
    supuwoerc
        55
    supuwoerc  
       2024-03-12 10:58:31 +08:00
    需要把闭包的坑踩一踩
    qqqqqcy
        56
    qqqqqcy  
       2024-03-12 11:03:08 +08:00
    不是前端就别学 react ,学 vue 官方文档要好很多
    lstz
        57
    lstz  
       2024-03-12 11:04:09 +08:00 via Android
    react 挺好学的,配合 redux toolkit ,开发效率 upup
    minottomie4383
        58
    minottomie4383  
       2024-03-12 11:08:50 +08:00
    正好别学了,随便给自己个理由
    比如作为开源技术还搞政治站队
    ThinkCat
        59
    ThinkCat  
       2024-03-12 11:10:41 +08:00
    react 已经很简单了,只要把状态管理搞明白,直接起飞。然后再去写 flutter ,分分钟开发个应用出来。
    luoway
        60
    luoway  
       2024-03-12 11:52:42 +08:00
    难易是相对的,如果你说 React 比 Vue 难,那么按月经帖是支持大于反对
    zbowen66
        61
    zbowen66  
       2024-03-12 12:07:10 +08:00
    @Seria #4 Flutter 更是重量级
    mmdsun
        62
    mmdsun  
       2024-03-12 12:17:45 +08:00 via iPhone
    @Seria
    UI = render(data) , 把 UI 抽象为函数完全没问题。
    x2ve
        63
    x2ve  
       2024-03-12 12:21:13 +08:00 via iPhone   ❤️ 2
    看完评论 每隔两层就有一个说应该关注某个重点的 哈哈 看来确实挺难
    kylix
        64
    kylix  
       2024-03-12 13:22:09 +08:00
    你不是一个人

    我已经放弃了 /dog
    Simonzzz
        65
    Simonzzz  
       2024-03-12 14:23:08 +08:00
    又开始了吗?搓手~
    royzxq
        66
    royzxq  
       2024-03-12 14:27:13 +08:00
    UI = render(data)

    结合 hooks ,react 真的很香
    czppgg
        67
    czppgg  
       2024-03-12 15:25:09 +08:00
    好像还可以吧
    cgpiao
        68
    cgpiao  
       2024-03-12 15:27:30 +08:00 via Android
    React 最大的好处是灵活性及关键字少,反之则是 vue.
    但因为更多的关键字及指令,vue 更傻瓜化。
    lichdkimba
        69
    lichdkimba  
       2024-03-12 15:29:11 +08:00
    react 的文档感觉就是很抽象,只适合高手
    xwwsxp
        70
    xwwsxp  
       2024-03-12 15:30:28 +08:00
    不是 React 太难学了,而是 JS 太难学了,JS 以灵活多变闻名于诸多需要;当然,糟粕也不少,神器的缝合怪~
    xwwsxp
        71
    xwwsxp  
       2024-03-12 15:32:07 +08:00
    闻名于诸多语言
    ChinaHkEgg
        72
    ChinaHkEgg  
       2024-03-12 17:29:43 +08:00
    估计是觉得 JSX 比较恶心吧
    N9f8Pmek6m8iRWYe
        73
    N9f8Pmek6m8iRWYe  
       2024-03-12 17:33:31 +08:00
    你觉得 React 很难学可能有以下几个原因¹²³⁴⁵:

    1. **函数式编程**:React 的本质是函数式编程,如果你不太了解函数式编程,可能会觉得难以理解。React 的许多概念和设计都源于函数式编程³。

    2. **灵活性**:React 提供了很大的灵活性,这意味着有很多种方法可以实现同样的功能。这种灵活性可能会让初学者感到困惑¹。

    3. **生态系统**:React 的生态系统非常丰富,包括各种状态管理库、路由库等。这种丰富性可能会给初学者带来选择困难¹。

    4. **学习曲线**:React 的学习曲线相对较陡。一开始可能会觉得很简单,但当你深入学习时,可能会发现有很多复杂的概念需要理解²。

    5. **优化**:React 的优化需要一定的心智负担,例如使用 PureComponent 和 shouldComponentUpdate 来避免不必要的渲染²。

    总的来说,React 的学习难度主要来自于其函数式编程的本质、灵活性、丰富的生态系统、陡峭的学习曲线以及优化的复杂性。但是,一旦你掌握了这些概念,你会发现 React 是一个非常强大和灵活的工具¹²³⁴⁵。希望这个解释能帮到你!

    源: 与必应的对话,2024/3/12
    (1) 为什么我觉得 react 这么难用? - 知乎. https://www.zhihu.com/question/356637220.
    (2) 为什么都在说 React 比 Vue 难? - 知乎. https://www.zhihu.com/question/328985141.
    (3) 为什么我觉得 react 这么难用? - 知乎. https://bing.com/search?q=%e4%b8%ba%e4%bb%80%e4%b9%88+react+%e5%be%88%e9%9a%be%e5%ad%a6.
    (4) 为什么我觉得 react 这么难用? - 知乎. https://www.zhihu.com/question/356637220/answers/updated.
    (5) 为什么都在说 React 比 Vue 难? - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/221964585.
    N9f8Pmek6m8iRWYe
        74
    N9f8Pmek6m8iRWYe  
       2024-03-12 17:33:57 +08:00
    GPT4 还行
    Navee
        75
    Navee  
       2024-03-12 17:54:57 +08:00
    最近在学习 nextjs ,也觉得好难,特别是页面布局、各种 ui 交互
    但是没有前后端分离、没有接口对接,真香
    happyxhw101
        76
    happyxhw101  
       2024-03-12 18:57:58 +08:00
    angular
    oliveira
        77
    oliveira  
       2024-03-12 19:11:42 +08:00
    觉得 React 难学,多半是 JS 就没学好。
    huangzhiyia
        78
    huangzhiyia  
       2024-03-12 19:22:24 +08:00
    @Navee 入门了就是一直香一直爽
    lozzow
        79
    lozzow  
       2024-03-12 20:56:15 +08:00 via Android
    看官网教程和直接去看项目,我感觉直接看个小项目更容易上手
    dahaoyoubeifeng
        80
    dahaoyoubeifeng  
       2024-03-12 22:44:45 +08:00
    感觉 react 老扯什么函数式编程就是在硬蹭,顶多就半毛钱关系
    okakuyang
        81
    okakuyang  
       2024-03-12 23:49:49 +08:00
    react 真的很简单,特别是告别 class 写法之后。核心概念就那么几个,懂了 react 之后基本上所有声明式框架都能上手了。
    dengji85
        82
    dengji85  
       2024-03-13 08:55:59 +08:00
    很变扭,前端工程化后我作为后端根本没动力学了,一堆技术感觉很不靠谱,期待大变革
    realJamespond
        83
    realJamespond  
       2024-03-13 13:18:24 +08:00
    就 useeffect 和 usestate 一把梭,很难么?
    SayHelloHi
        84
    SayHelloHi  
       362 天前
    感觉自己写的 React 代码很不优雅

    但是 又满足了需求(能运行 无 bug )
    devzhaoyou
        85
    devzhaoyou  
       357 天前
    自学了一周前端,react 写出个封面图片制作工具,http://picprose.pixpark.net/, 咋感觉 css 比 react 难学,难学的不是语法,是各种布局用法,现在还没搞清楚
    devzhaoyou
        86
    devzhaoyou  
       356 天前
    看了很多 react vue 对比的言论文章,感觉就像一群青铜玩家在讨论英雄的各种参数,哪个英雄好哪个不好,各种英雄都能上王者
    azhong123
        87
    azhong123  
       306 天前
    @ThinkCat 为啥不用 react native ?、
    flutter 还得学习 dart
    ThinkCat
        88
    ThinkCat  
       304 天前
    @azhong123 因为 react native 的开发体验太差了,按文档配置了很久,还是各种问题。 用了一下 flutter ,很丝滑,分分钟就能看到效果。 其实 dart 不是问题,dart 语法和 java 的相似度是 90%,我一度感觉是在写 java 。flutter 和 react 的思路是完全一致的,都是 UI = render(data) 的模式,并且各种组件库资源极其丰富。我已经用 flutter 开发好一个程序了,非常顺滑。
    azhong123
        89
    azhong123  
       303 天前
    @ThinkCat 哦哦,我一开始想的有 reace 基础,上手 react-native 的曲线会平滑一点,但是从你的回复看来好像不是那么回事
    iszengmh
        90
    iszengmh  
    OP
       110 天前
    很久没回来看了,这么多评论,评论中有说到个很多特性就是有点反直觉,这个真的有点感深受,现在也是边做边学,还是普通水平,没有其他技术栈那种熟手的感觉
    jamesdongdong
        91
    jamesdongdong  
       81 天前
    公司项目原因我先学的 vue ,感觉挺容易上手的,各种概念的理解也很快。最近换组了在学 react ,我感觉 react 更复杂一些啊,比如 useEffect 一个 hook 牵扯到 3 个生命周期:)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5705 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 02:02 · PVG 10:02 · LAX 19:02 · JFK 22:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.