在构建html元素时,vue倾向于模板方式,而react则完全使用javascript的编程能力,但vue也具备完全编程的能力(与react一样使用JSX和createElement渲染函数)。所以,当vue使用完全编程方式时,与react可以说是大同小异。

学习react的时候,有一个核心思想:组件就是函数,元素就是值。这对于vue来说也是完全适用的,唯一的区别在于两者的限制和使用条件不同。

目录

  • JSX
  • 元素渲染
  • 组件定义
  • 组件传值
  • 内容分发
  • 数据响应
  • 事件处理

JSX

JSX是JavaScript的一个扩展语法,本质是createElement渲染函数的语法糖。react和vue在JSX语法上几乎一致,区别在于属性值的传入上。

react的JSX语法更接近 JavaScript 而不是 HTML,所以 React DOM 使用 camelCase(小驼峰命名)来定义属性的名称,而不使用 HTML 属性名称的命名约定。
例如,JSX 里的 class 变成了 className,而 tabindex 则变为 tabIndex

vue的JSX则使用了一个Babel 插件使其更贴近HTML模板语法,vue对大小写不敏感(实际上vue会将所有属性值转换为小写)。
例如,tabIndex会转化成tabindexclassName会转化为classname

特例,对于属性class,react应写成className,vue应写成class

react引入了Fragments使得react可以有多个根元素,vue没有此功能,只能是单一根元素

元素渲染

react的文档中提到了

元素是构成 React 应用的最小砖块。

const element = <h1>Hello, world</h1> // 定义元素...
render () {return <div>{element}</div> // 使用元素
}

react将元素当作值来对待,你可以直接使用,也可以先赋值给某个变量,然后再使用。
这一点在vue的文档中虽然没有明确提到,但依然适用,vue也可以先将元素赋值给某个变量,然后在适当的位置使用该变量。

两者在使用时的区别在于:

  • react可以在任意位置(组件内和组件外)定义元素并使用
  • vue只能在组件内定义元素(只要是组件内,任意位置都可以,render函数内,data数据或者其他位置),在组件外定义则会报错(h is not defined

报错原因:网上找到的一个说法是vue中组件外没有上下文联系,找不到渲染函数。
思来想去只能归结于两者的渲染机制不同(没有依据,瞎猜的

vue完全编程方式与react在书写和运用上的异同相关推荐

  1. android gravity参数,android - 如何以编程方式设置layout_gravity?

    android - 如何以编程方式设置layout_gravity? 我的问题很简单, 如何以编程方式设置我的按钮layout_gravity? 我在互联网上发现了这个,但它只是抛出了一个Nullpo ...

  2. 使用React Router以编程方式导航

    通过react-router我可以使用Link元素来创建由react路由器本地处理的链接. 我在内部看到它调用this.context.transitionTo(...) . 我想从下拉列表中进行导航 ...

  3. 我决定切换到 Vue.js,不再使用 React!

    点击上方的终端研发部,右上角选择"设为星标" 作者:Gwenael P,前端工程师,Vue.js的狂热者 译者:弯月 现在,Vue.js 在 Github 上得到的星星数已经超过了 ...

  4. 论vue3.0和vue2.0区别之编程方式及例子详解

    系列文章目录 第一章 论vue3.0和vue2.0区别之编程方式及例子详解 第二章 同一台电脑 实现 vue-cli2和vue-cli3同时并存 及 常见命令 第三章 vue3.0项目实战 - Ele ...

  5. [react] react的书写规范有哪些

    [react] react的书写规范有哪些 React元素必须使用大驼峰命名的方式 组件尽量命名,方便进行调试 JSX尽量用小括号包起来,更加直观,防止换行时出错 个人简介 我是歌谣,欢迎和大家一起交 ...

  6. 函数式编程在Redux/React中的应用

    本文简述了软件复杂度问题及应对策略:抽象和组合:展示了抽象和组合在函数式编程中的应用:并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践.这其中包括了一段有趣的Redux推导 ...

  7. 关于vue.js 编程导航的使用:实现路由配置和跳转页面

    本文主要讲述:通过vue.js 编程导航,实现路由配置和跳转页面的功能! 基础篇,仅作为简单演示. 总结 不能保证用户一定会点击某些按钮 并且当前操作,除了路由跳转以外,还会有一些别的附加操作(比如执 ...

  8. vue.js 编程导航,如何传递参数?

    本文主要讲述:关于vue.js 编程导航,如何传递参数? 本文主要讲述:通过vue.js 编程导航,实现路由配置和跳转页面的功能! 基础篇,仅作为简单演示. 总结 不能保证用户一定会点击某些按钮 并且 ...

  9. 使用反应路由器V4以编程方式导航

    本文翻译自:Programmatically navigate using react router V4 I have just replaced react-router from v3 to v ...

最新文章

  1. python怎么用函数查看变量类型_查看变量类型的Python内置函数是()。
  2. ${pageContext.request.contextPath}
  3. [How TO]-堡垒机快捷登陆SSH服务器-expect自动输密码
  4. 详解集合之HashMap——HashMap内部结构,自动扩容机制,为什么需要重写hashcode和equals方法
  5. HDU 4283:You Are the One(区间DP)
  6. 通过WiFi调试android手机
  7. Log4--Java日志记录器
  8. 网站对战服务器,PVP核心精华:三大服务器对战
  9. 【Oracle】to_char技巧
  10. 怎么在pta上搜题_在电脑上搜题,是不用模拟器的那种
  11. 计算机控制机器人运动的原理,工业机器人控制系统的基本原理
  12. c++ 向量化_一种新的FIR滤波器系数量化方法
  13. canvas学习绘制渐变色
  14. 云原生kubernetes七 :Pod进阶篇:污点-容忍度-亲和性-Affinity-调度
  15. 知识点15:文件的高级应用
  16. python爬虫 爬取图片
  17. java方法后面throw的作用_Java异常处理中throw与throws的用法区别
  18. windows10 RocketMQ启动 mqbroker 异常
  19. elementUI angular适合做H5吗
  20. 代刷网html统计代码,【QQ代刷网】前台代码大全

热门文章

  1. [杭电ACM]1012u Calculate e
  2. struts2 kindeditor teatarea拿不到值问题。
  3. 网规:第4章 网络安全-4.5IDS和IPS
  4. 微信发力了,一键部署网站后端!
  5. 性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!
  6. 面试官: 平时开发中你用过读写锁吗?
  7. 不要笑!写 | 还是 || ,还真是一个问题
  8. Masuit.Tools,一个免费的轮子
  9. 巧用Newtonsoft.Json处理重复请求/并发请求?
  10. C#使用NPOI进行word的读写