1、生命式设计:react采用声明范式。 2、高效:react通过对DOM的模拟,最大限度减少DOM交互。 3、灵活:react可与已知的库和框架很好的配合。 4、JSX:JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。 5、组件:通过react构建组件,使得代码更加容易得到复用,能够很好应用在大项目开发中。 6、单向页面的数据流:react实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
React的限制如下:
React 只是一个库,而不是一个完整的框架它的库非常庞大,需要时间来理解新手程序员可能很难理解编码变得复杂,因为它使用内联模板和 JSXVirtual DOM 是一个轻量级的 JavaScript 对象,它最初只是 real DOM 的副本。它是一个节点树,它将元素、它们的属性和内容作为对象及其属性。 React 的渲染函数从 React 组件中创建一个节点树。然后它响应数据模型中的变化来更新该树,该变化是由用户或系统完成的各种动作引起的。
Virtual DOM 工作过程有三个简单的步骤。
每当底层数据发生改变时,整个 UI 都将在 Virtual DOM 描述中重新渲染。然后计算之前 DOM 表示与新表示的之间的差异。完成计算后,将只用实际更改的内容更新 real DOM。JSX 是JavaScript XML 的简写。是 React 使用的一种文件,它利用 JavaScript 的表现力和类似 HTML 的模板语法。这使得 HTML 文件非常容易理解。此文件能使应用非常可靠,并能够提高其性能。
浏览器只能处理 JavaScript 对象,而不能读取常规 JavaScript 对象中的 JSX。所以为了使浏览器能够读取 JSX,首先,需要用像 Babel 这样的 JSX 转换器将 JSX 文件转换为 JavaScript 对象,然后再将其传给浏览器。
key是React中用于追踪哪些列表中元素被修改、删除或者被添加的辅助标识。在diff算法中,key用来判断该元素节点是被移动过来的还是新创建的元素,减少不必要的元素重复渲染。
Refs 是 React 中引用的简写。它是一个有助于存储对特定的 React 元素或组件的引用的属性,它将由组件渲染配置函数返回。用于对 render() 返回的特定元素或组件的引用。当需要进行 DOM 测量或向组件添加方法时,它们会派上用场。
以下是应该使用 refs 的情况:
需要管理焦点、选择文本或媒体播放时触发式动画与第三方 DOM 库集成代码中调用 setState 函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。
经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个 UI 界面;在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然后根据差异对界面进行最小化重渲染;在差异计算算法中,React 能够相对精确地知道哪些位置发生了改变以及应该如何改变,这就保证了按需更新,而不是全部重新渲染。因为setState是一个异步的过程,所以说执行完setState之后不能立刻更改state里面的值。如果需要对state数据更改监听,setState提供第二个参数,就是用来监听state里面数据的更改,当数据更改完成,调用回调函数。
Flux 的最大特点,就是数据的"单向流动"。
用户访问 ViewView 发出用户的 ActionDispatcher 收到 Action,要求 Store 进行相应的更新Store 更新后,发出一个"change"事件View 收到"change"事件后,更新页面React Element 是描述屏幕上所见内容的数据结构,是对于 UI 的对象表述。 典型的 React Element 就是利用 JSX 构建的声明式代码片然后被转化为 createElement 的调用组合。
React Component 是一个函数或一个类,可以接收参数输入,并且返回某个 React Element
React.createElement():JSX 语法就是用 React.createElement()来构建 React 元素的。
它接受三个参数,第一个参数可以是一个标签名。如 div、span,或者 React 组件。第二个参数为传入的属性。第三个以及之后的参数,皆作为组件的子组件。
React.cloneElement()与 React.createElement()相似,不同的是它传入的第一个参数是一个 React 元素,而不是标签名或组件。
新添加的属性会并入原有的属性,传入到返回的新元素中,而就的子元素奖杯替换。
通常情况下我们会使用 Webpack 的 DefinePlugin 方法来将 NODE_ENV 变量值设置为 production。编译版本中 React会忽略 propType 验证以及其他的告警信息,同时还会降低代码库的大小,React 使用了 Uglify 插件来移除生产环境下不必要的注释等信息
因为题多,所以分了几篇: 第一篇(一)https://blog.csdn.net/g1437353759/article/details/109204846 第三篇(三)https://blog.csdn.net/g1437353759/article/details/109206406