JSX是对JavaScript的语法拓展,使得我们可以在JS中编写像HTML一样的代码。比如:

// index.js
ReactDOM.render(<ClickCounter />, document.getElementById('root')
);

这里的<ClickCounter />就是JSX代码。

我们可以在JS代码中直接使用类似HTML的语法,但是标签又不是HTML提供的。

React判断一个元素是HTML元素还是React组件,方法是通过看首字母是否大写。

所以如果把ClickCounter改成clickCounter就会出错。

定义样式

  render() {const counterStyle = {margin: '16px'};return (<div style={ counterStyle }><button onClick={ this.onClickButton }> Click Me </button><div>Click Count: { this.state.count }</div></div>);}

React的理念

用原生的JS或者jQuery这种库,对DOM的处理步骤一般是:选中一些DOM元素然后做一些事情。

React提供的做事方式是,开发者聚焦在“我想要显示什么”,而不用去纠结“怎样做到”。

归结为一个公式就是:

UI=render(data)UI = render(data) UI=render(data)

即,用户看到的界面是一个函数的执行结果,接受数据作为参数,所以显示出来是什么样子,取决于传进来的数据是什么。

那么,开发者就需要区分出来,哪些是数据,哪些是render,更新用户界面,其实就是更新数据,界面会自然做出响应

虚拟DOM

React是通过重复渲染来实现用户交互,界面响应变化。如果每次都重新渲染,会不会太低效?

React实现的方式是,每次更新都是重新调用render函数。

借助于虚拟DOM,React可以实现每次都只重新渲染最少的DOM元素。

总结:React是利用函数式编程的思维来解决用户界面渲染问题,强制所有组件都按照数据驱动渲染的模式工作,所以不管应用规模如何庞大,程序都在可控范围内。

参考:

《深入浅出React和Redux》

【React】JSX相关推荐

  1. 【react】JSX基本语法

    1.全称 JavaScript XML 2.定义 是react定义的一种类似于XML的JS扩展语法: JS + XML本质是React.createElement(component, props, ...

  2. 【react】使用代理解决跨域问题

    [react]使用代理解决跨域问题 参考文章: (1)[react]使用代理解决跨域问题 (2)https://www.cnblogs.com/guanpingping/p/10344197.html ...

  3. 【react】react18的学习(三)--hooks组件

    上一篇:[react]react18的学习(二)-三种组件 1.useState:使函数组件可以使用并修改 state import { useState } from 'react' const [ ...

  4. 【React】路由详解

    文章目录 Router 介绍 Router 原理 Router 安装 Router 使用 Link 和 NavLink Route 属性 path 属性 exact 属性 Route 组件 compo ...

  5. 【React】react-infinite-scroll-component 实现滚动加载

    react-infinite-scroll-component 实现滚动加载 效果 index.tsx import {useState, useEffect} from 'react' import ...

  6. 【React】1077- React Fiber架构浅析

    1.浏览器渲染 为了更好的理解 React Fiber, 我们先简单了解下渲染器进程的内部工作原理. 参考资料: 从内部了解现代浏览器(3)[1] 渲染树构建.布局及绘制[2] 1.1 渲染帧 帧 ( ...

  7. 【React】一路走来并持续竞走

    简单整理一下React相关知识点 关于react有些知识点的理解 组件的三个生命周期状态:1. Mount: 插入真实DOM2. Update:被重新渲染3. Unmount:被移出真实DOM --- ...

  8. 【React】二.JSX

    目录 二.JSX JSX的基本使用 jsx使用步骤 JSX中使用JavaScript表达式 嵌入JS表达式 注意点 JSX的条件渲染 问题记录 JSX的列表渲染 JSX的样式处理 总结 二.JSX J ...

  9. 【React】通过jsx语法创建虚拟DOM动态及数组赋值的方法(图文+代码)

    jsx语法规则: 1.定义虚拟DOM时,不要写引号. 2.标签中混入JS表达式时要用{}. 3.样式的类名指定不要用class,要用className. 4.内联样式,要用style={{key:va ...

最新文章

  1. Windows 11 预览版泄露!有 macOS 那味儿了......
  2. [转载]非常量引用的初始值必须为左值的问题
  3. 20191014:快速排序1.2
  4. SharePoint 2010之LINQ与SPMetal
  5. Yii 2.0 权威指南 (2) 使用forms
  6. 全用户态网络开发套件F-Stack架构分析
  7. unity read files 从ini文件
  8. 私塾在线《研磨设计模式》,精品课程上线特大惊喜
  9. 最常用的前端网站模板集合
  10. 数学分析-基本积分表
  11. 电化学血糖传感器原理及发展
  12. sql2008服务器运行哪个,SQL SERVER 2008R2 暂用服务器内存直到服务器死机。
  13. php jq 提交表单验证,jQuery EasyUI 表单 – 表单验证 | 菜鸟教程
  14. python ‘//’ 取整,‘%’ 取余
  15. 黑鹰的学习网站--感兴趣的可以去看看
  16. [算法深究]奇葩排序
  17. 9102年了,还不知道Android为什么卡?
  18. 如何将日期格式转换为英文格式
  19. 展厅智能中央控制服务器,展厅智能照明管理系统-智能中央控制系统
  20. LARAVEL敏感信息泄漏

热门文章

  1. linux 卸载docker 离线_Linux环境安装、卸载Docker
  2. rx文件管理器window_像浏览器一样管理你的文件!
  3. dedecms进入mysql后台_DEDECMS 爆严重安全漏洞 免账号密码直接进入后台
  4. ios 旋转屏幕试图切换_总结iOS App开发中控制屏幕旋转的几种方式
  5. java 实体类属性排序_按照list中实体类的某一属性排序
  6. shell学习之-sed用法解析_Shell脚本之sed的使用
  7. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc
  8. SeleniumCSS选择器
  9. kotlin多继承_Kotlin继承
  10. Java FileWriter示例