Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

react基础巩固学习 #259

Open
hehongwei44 opened this issue Apr 26, 2018 · 14 comments
Open

react基础巩固学习 #259

hehongwei44 opened this issue Apr 26, 2018 · 14 comments

Comments

@hehongwei44
Copy link
Owner

链接地址:http://huziketang.mangojuice.top/books/react/

@hehongwei44
Copy link
Owner Author

react的作用是什么

React.js 是一个帮助你构建页面 UI 的库。如果你熟悉 MVC 概念的话,那么 React 的组件就相当于 MVC 里面的 View。如果你不熟悉也没关系,你可以简单地理解为,React.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合、嵌套,就成了我们的页面。

@hehongwei44
Copy link
Owner Author

react中组件和状态之间的关系

一个组件的显示形态和行为有可能是由某些数据决定的。而数据是可能发生改变的,这时候组件的显示形态就会发生相应的改变。而 React.js 也提供了一种非常高效的方式帮助我们做到了数据和组件显示之间的同步。

PS: React.js 不是一个框架,它只是一个库。它只提供 UI (view)层面的解决方案。在实际的项目当中,它并不能解决我们所有的问题,需要结合其它的库,例如 Redux、React-router 等来协助提供完整的解决方法。

@hehongwei44
Copy link
Owner Author

组件化的作用

组件化可以帮助我们解决前端结构的复用性问题,整个页面可以由这样的不同的组件组合、嵌套构成。

一个组件有自己的显示形态(上面的 HTML 结构和内容)行为,组件的显示形态和行为可以由数据状态(state)和配置参数(props)共同决定。数据状态和配置参数的改变都会影响到这个组件的显示形态。

当数据变化的时候,组件的显示需要更新。所以如果组件化的模式能提供一种高效的方式自动化地帮助我们更新页面,那也就可以大大地降低我们代码的复杂度,带来更好的可维护性。

@hehongwei44
Copy link
Owner Author

hehongwei44 commented Apr 26, 2018

JSX 的原理

链接:http://huziketang.mangojuice.top/books/react/lesson6

所谓的 JSX 其实就是 JavaScript 对象

@hehongwei44
Copy link
Owner Author

为什么不直接从 JSX 直接渲染构造 DOM 结构,而是要经过中间这么一层呢?

第一个原因是,当我们拿到一个表示 UI 的结构和信息的对象以后,不一定会把元素渲染到浏览器的普通页面上,我们有可能把这个结构渲染到 canvas 上,或者是手机 App 上。所以这也是为什么会要把 react-dom 单独抽离出来的原因,可以想象有一个叫 react-canvas 可以帮我们把 UI 渲染到 canvas 上,或者是有一个叫 react-app 可以帮我们把它转换成原生的 App(实际上这玩意叫 ReactNative)。

第二个原因是,有了这样一个对象。当数据变化,需要更新组件的时候,就可以用比较快的算法操作这个 JavaScript 对象,而不用直接操作页面上的 DOM,这样可以尽量少的减少浏览器重排,极大地优化性能。这个在以后的章节中我们会提到。

@hehongwei44
Copy link
Owner Author

理解JSX原理的要点

  1. JSX 是 JavaScript 语言的一种语法扩展,长得像 HTML,但并不是 HTML。
  2. React.js 可以用 JSX 来描述你的组件长什么样的。
  3. JSX 在编译的时候会变成相应的 JavaScript 对象描述。
  4. react-dom 负责把这个用来描述 UI 信息的 JavaScript 对象变成 DOM 元素,并且渲染到页面上。

@hehongwei44
Copy link
Owner Author

hehongwei44 commented Apr 26, 2018

setState原理的理解

链接:http://huziketang.mangojuice.top/books/react/lesson10

setState 方法由父类 Component 所提供。当我们调用这个函数的时候,React.js 会更新组件的状态 state ,并且重新调用 render 方法,然后再把 render 方法所渲染的最新的内容显示到页面上。

PS: 这里还有要注意的是,当你调用 setState 的时候,React.js 并不会马上修改 state。而是把这个对象放到一个更新队列里面,稍后才会从队列当中把新的状态提取出来合并到 state 当中,然后再触发组件更新。这一点要好好注意。

@hehongwei44
Copy link
Owner Author

组件的生命周期

链接:http://huziketang.mangojuice.top/books/react/lesson18

@hehongwei44
Copy link
Owner Author

hehongwei44 commented Apr 27, 2018

深度剖析:如何实现一个 Virtual DOM 算法

链接地址:livoras/blog#13

高阶组件的作用其实不言而喻,其实就是为了组件之间的代码复用。组件可能有着某些相同的逻辑,把这些逻辑抽离出来,放到高阶组件中进行复用。高阶组件内部的包装组件和被包装组件之间通过 props 传递数据。

@hehongwei44
Copy link
Owner Author

从零造 React 之 —— Preparation: https://zhuanlan.zhihu.com/p/34187116 或者 https://github.com/cyan33/learn-react-source-code

@hehongwei44
Copy link
Owner Author

React16新特征总览: https://zhuanlan.zhihu.com/p/34604934

@hehongwei44
Copy link
Owner Author

React:Suspense的实现与探讨: https://zhuanlan.zhihu.com/p/34210780

@hehongwei44
Copy link
Owner Author

从时间旅行的乌托邦,看状态管理的设计误区: https://zhuanlan.zhihu.com/p/32107541

@hehongwei44
Copy link
Owner Author

React 16 加载性能优化指南: https://zhuanlan.zhihu.com/p/37148975

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant