react学习笔记

332 阅读2分钟

origin来源

  1. 传统UI操作关注太多的细节。传统DOM API关注太多细节。react始终整体刷新
  2. 应用程序状态分散在各处,难维护和追踪

UI细节问题,通过整体刷新解决。

数据问题:单向数据流。     Flux架构    (衍生出Redux 、 MobX)


理解React组件

props + state ---> View

  1. 组件一般不提供共用方法,更像是某种状态机。
  2. React组件可以理解成一个纯函数。
  3. 单向数据绑定。


创建组件

  1. 创建静态UI
  2. 考虑组件的状态组成
  3. 考虑组件的交互方式


数据状态管理原则

  1. 计算得到的状态,不要单独存储
  2. 组件尽量无状态,数据用props获取


JSX---在JavaScript代码中,直接写HTML标记语言

jsx本质:并不是模板语言,只是一种语法糖,动态创建组件的语法糖。


写法对比:

const element= <h1>hello,{name}</h1>;

const element = React.createElement('h1', null, 'Hello,', name);


属性中使用表达式

表达式作为元素


JSX优点:

  1. 声明式创建界面的直观
  2. 代码动态创建界面的灵活
  3. 无需学习新的模板语言


约定:

小写开头的是原生DOM,如div

大写开头是自定义组件

JSX标记可以直接使用属性语法,如<menu.Item />


生命周期

"Render阶段":纯净且没有副作用

"Precommit"阶段:可以读取DOM

"Commit"阶段:可以使用DOM

创建时:

更新时:

卸载时:


ps : 熟练掌握框架的前提,是熟练了解各生命周期能做的事。


virtual DOM 

两个假设:

  1. 组件的DOM结构是相对稳定的。
  2. 类型相同的兄弟节点可以被唯一标识。


高阶组件

  1. 高阶组件接受组件作为参数,返回新的组件。
  2. 函数作为子组件。


ContextAPI