Cbdy
V2EX  ›  问与答

Vue.js 的 JSX 中的 class attribute 为什么用 class,而不像 React 那样用 className

  •  
  •   Cbdy · Jan 27, 2021 via Android · 3373 views
    This topic created in 2108 days ago, the information mentioned may be changed or developed.

    React 给出的解释是 class 是 JavaScript 的保留字

    18 replies  •  2021-01-28 13:24:01 +08:00
    Chemist
    Chemist
    Jan 27, 2021 via iPhone
    1
    因为 react 是 HTML in js,本质上还是 js 。

    vue 是 HTML 标签的拓展。
    hackyuan
    hackyuan
    Jan 27, 2021
    2
    这个你都自问自答了,`class 是 Javascript 的保留字`。
    而 HTML 中只是标签上的一个属性而已。
    David1119
    David1119
    Jan 27, 2021
    3
    难道不应该反过来问吗?怎么反而成了 vue 不对了。。。。
    anguiao
    anguiao
    Jan 27, 2021
    4
    反正都得经过 Babel 转译嘛,我觉得没差。
    hjdtl
    hjdtl
    Jan 27, 2021
    5
    一楼正确,此贴终结
    murmur
    murmur
    Jan 27, 2021
    6
    因为在 html 里就是 class 啊,react 才是为了偷懒啥封装都不做
    u6pM63mMZ34z32cE
    u6pM63mMZ34z32cE
    Jan 27, 2021
    7
    别问, 问就是新的语法 新的体验
    shintendo
    shintendo
    Jan 27, 2021
    8
    正确的问法:为什么 React 要用 className 而不是跟 HTML 一样用 class,明明 vue 的 JSX 证明了保留字不是问题
    molvqingtai
    molvqingtai
    Jan 27, 2021
    9
    楼上正解,因为 React 团队偷懒
    yaphets666
    yaphets666
    Jan 27, 2021
    10
    vue 的思路是尽量保证和原始 HTML,JS,CSS 一致.
    template 里头的东西称作为模板,会经过 vue-loader 的处理.写什么都可以.
    class 和原生一样,并且意义是一致的,就是添加类名,当然选择 class 更符合直觉.
    这就是 vue 更加简单,容易学习的原因.尽量做的和原生一样.
    soulmt
    soulmt
    Jan 27, 2021
    11
    这事又没有标准答案,都是开发者基于自己的逻辑来约定的而已, 不用太过于纠结。
    robinlovemaggie
    robinlovemaggie
    Jan 27, 2021
    12
    说到这个就要刨根究底 React 和 Vue 本质上不同之处了:
    1.React 是个库(library), 而 Vue 是个框架(Framework)
    2.状态变更(Data Mutation)不同,React 是被动式(setState)给用户自主权,Vue 是主动 re-rendering,用户无法控制渲染时机。
    seki
    seki
    Jan 27, 2021
    13
    className 是早期时候 API 设计的决定,现在来看其实本来用 class 也是没有问题的。react 开发团队也有过更改设计的想法,虽然目前没有什么新消息。采用类 react API 的 preact 就是用的 class

    这种事情没有必要拔得太高……
    Biwood
    Biwood
    Jan 27, 2021
    14
    先搞清楚一个概念,Vue 里面那个不是 JSX,是 template,用的是 HTML 语法。
    React 里面那个才叫 JSX,用的是 JavaScript 语法。
    html 语法里面用 class,JS 语法里面用 className,很正常。
    shintendo
    shintendo
    Jan 27, 2021
    15
    @Biwood 先搞清楚一个概念,Vue 支持 JSX
    Biwood
    Biwood
    Jan 27, 2021
    16
    @shintendo #15
    Vue 里面所谓的 JSX 只能算是 template 的语法糖,这跟 React 里面一切皆用 JS 写的理念不一样。
    硬要刨根问底,我觉得本质上就是 template 语法跟 JavaScript 语法的区别,毕竟 Vue 的 template 模式继承自 Angular,而 React 不是。
    shintendo
    shintendo
    Jan 27, 2021
    17
    @Biwood template 是 render funtion 的语法糖,JSX 也是 render function 的语法糖,这一点和 React 的 JSX 并没有本质区别
    assclb
    assclb
    Jan 28, 2021
    18
    @Biwood #17 讲的没错,vue 里面不管是 jsx 还是 template 都是 render function 的语法糖...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4582 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 09:38 · PVG 17:38 · LAX 01:38 · JFK 04:38
    ♥ Do have faith in what you're doing.