第一章 React新的前端思维方式
---恢复内容开始---
第一章 React新的前端思维方式
1.1 初始化一个React项目
1、安装create-react-app
npm install --global create-react-app
2、创建一个react项目
create-react-app 项目名称
3、进入项目目录
cd 项目名
4、启动项目
npm start
1.2 增加一个新的React组件
创建一个显示点击次数的组件
第一步:
找到入口文件src/index.js,修改index.js文件
import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; // import App from './App'; import ClickCounter from './ClickCounter' // import * as serviceWorker from './serviceWorker'; // ReactDOM.render(<App />, document.getElementById('root')); ReactDOM.render(<ClickCounter />, document.getElementById('root'))
第二步:
创建一个ClickCounter.js文件
import React, {Component} from 'react' class ClickCounter extends Component{ constructor(props){ super(props) this.onClickButton = this.onClickButton.bind(this) this.state = {count:0} } onClickButton(){ this.setState({count:this.state.count + 1}) } render() { return ( <div> <button onClick={this.onClickButton}>Click Me</button> <div> Click Count: {this.state.count} </div> </div> ) } } export default ClickCounter
1.2.1 JSX
JSX是JavaScript的语法扩展(eXtension),让我们在JavaScript中可以编写像HTML一样的代码。
webpack.config.dev文件中会我了一部分关于babel的定义。
并不是所有 的浏览器都支持所有 ES6语法,但是有了 babel,我们就可 以不用顾忌 太多,因为 babel会把 ES6语法的 JavaScript代码转译( transpile) 成浏览器普遍支持的 JavaScript代码
1.4 React的工作方式
1.4.1 参考另一篇jquery和React比较
1.4.2 Virtual Dom
React的实现方式,看起来像每次reander函数被调用,都要把整个组件重新绘制一次,有点浪费,但事实不是这样,React利用Virtual DOM,让每次渲染都只重新渲染最少的DOM元素。
有关DOM的渲染请参考此文章,个人觉得还不错,都是干货:https://mp.weixin.qq.com/s/OErtV9FBxIJszxYbGUL3Vg
Virtual Dom之所以称之为虚拟DOM,是因为不会触及浏览器部分,只存在于javascript空间的树形结构,自上而下渲染React组件时,会对比这一次产生的Virtual DOM和上一次渲染的Virtual DOM,然后修改真正的DOM树时只需要触及差别中的部分就行。