React 特性
数据
数据驱动
在React中,一切皆数据。要想改变界面元素,或者更改
dom
结节,只需要修改数据就好了。切记:在React中不要操作
Dom
节点。state
React的数据,所有的数据都用
state
来管理。分为组件
state
和全局state
.单向数据流
数据只能从
state
流向dom
,不能逆向更改。
程序
声明式(函数式)
纯函数:函数的输出不受外部环境影响,同时也不影响外部环境。例如:
[1, 2, 3].map(index => index + 1);
非纯函数:输入相同,输出不同的函数。例如:
Math.random();
函数的柯里化:将一个低阶函数转换为高阶函数的过程。例如:
(arg1, arg2, arg3) => arg1 => arg2 => arg3;
组件化的
把数据组织起来的表现形式。
() => ('我是一个组件');
JSX语法
在
javascript
中可以编辑html
片段。() => <div>我也是一个组件</div>
客户端和服务端渲然
把代码拉取到客户端,再编译执行的方式就是客户端渲然。这种方式是无法支持
SEO
的,所有就有了服务端渲然,在服务端提前渲然成静态html
页面。第三方服务端渲然库:next.js
性能
虚拟节点
将
dom
抽象成一个javascript
对象,例如:const element = { element: 'ul', props: { id:"ulist" }, children: [ { element: 'li', props: { id:"first" }, children: ['这是第一个List元素'] }, { element: 'li', props: { id:"second" }, children: ['这是第二个List元素'] } ] }
diff
将虚拟
dom
转化为真实dom
的算法。分为三级:tree diff
,component diff
,element diff
.