自己实现的reactjs,用于加深对React的理解
git clone [email protected]:lingximu/my_reactjs.git
cd my_reactjs
npm install
npm start ## 内部用browser-sync代理index.hmtl进行开发包括"初次渲染"和"组件更新"两部分
三个基本组件类
ReactDOMTextComponent
ReactDOMComponent
ReactCompositeComponent
- 所有都用
React.createElement进行初始化,包括React.createClass生成的组件。- 用
instantiateReactComponent实例化- 用
mountComponent挂载(每个类只关心自己的)
用setState及各个类上的receiveComponent 更新.
其中包括三个关键方法 _shouldUpdateReactComponent 、_diff 、 _patch。
_shouldUpdateReactComponent用来判断是否是相同的组件,从而判断是修改还是重新mount._diff核心算法,判断改变的节点。所有的并存在diffQueue中。_patch,在用_diff收集完所有改变后,用这个方法进行改变。
实现了初次渲染、数据更新、组件更新的功能
