第一部分 基础篇 第1章 React简介与开发基础 3 1.1 React简介 3 1.1.1 React的定义 3 1.1.2 React的特点 3 1.1.3 React的发展简史 4 1.2 React应用开发的简单示例 5 1.2.1 单个HTML文件应用React的示例 5 1.2.2 元素渲染说明 8 1.2.3 两个文件应用React的示例 9 1.2.4 应用React的示例对比分析 10 1.3 JSX应用开发入门 11 1.3.1 JSX说明 11 1.3.2 JSX综合应用示例 11 1.3.3 JSX综合运行效果 14 习题1 14 第2章 React组件 15 2.1 React组件概述 15 2.1.1 组件和自定义组件 15 2.1.2 函数组件和类组件 16 2.2 函数组件和类组件的应用开发 16 2.2.1 开发示例 16 2.2.2 运行效果 17 2.3 组件参数和组合组件 18 2.3.1 说明 18 2.3.2 开发示例 18 2.3.3 运行效果 21 2.4 组件的分解和组合 21 2.4.1 说明 21 2.4.2 开发示例 22 2.4.3 运行效果 24 2.5 组件的生命周期 24 2.5.1 概述 24 2.5.2 constructor()方法 25 2.5.3 componentDidMount()方法 25 2.5.4 componentDidUpdate()方法 25 2.5.5 componentWillUnmount()方法 25 2.5.6 开发示例 26 2.5.7 运行效果 27 习题2 28 第3章 React事件处理 29 3.1 React事件处理概述 29 3.1.1 事件 29 3.1.2 合成事件 30 3.1.3 支持的事件类型 30 3.2 鼠标事件处理 31 3.2.1 开发示例 31 3.2.2 运行效果 34 3.3 焦点事件处理 36 3.3.1 开发示例 36 3.3.2 运行效果 38 3.4 键盘事件处理 39 3.4.1 开发示例 39 3.4.2 运行效果 40 3.5 图像事件处理 41 3.5.1 开发示例 41 3.5.2 运行效果 43 习题3 44 第4章 React条件渲染、列表和key 45 4.1 React条件渲染、列表和key概述 45 4.1.1 条件渲染 45 4.1.2 列表 45 4.1.3 key 46 4.2 条件渲染的应用开发 46 4.2.1 开发示例 46 4.2.2 运行效果 51 4.3 列表的应用开发 52 4.3.1 开发示例 52 4.3.2 运行效果 54 4.4 key的应用开发 55 4.4.1 开发示例 55 4.4.2 运行效果 58 4.5 列表和key的综合应用 58 4.5.1 开发示例 58 4.5.2 运行效果 60 习题4 61 第5章 React状态管理 62 5.1 React状态管理概述 62 5.1.1 state 62 5.1.2 setState()方法 63 5.1.3 forceUpdate()方法 64 5.1.4 状态提升 64 5.2 状态的基础应用 64 5.2.1 开发示例 64 5.2.2 运行效果 70 5.3 状态的提升应用 71 5.3.1 开发示例 71 5.3.2 运行效果 75 习题5 77 第6章 React表单 78 6.1 React表单概述 78 6.1.1 表单 78 6.1.2 受控组件 78 6.1.3 非受控组件 79 6.2 表单组件 79 6.2.1 开发示例 79 6.2.2 运行效果 86 6.3 ref 87 6.3.1 开发示例 87 6.3.2 运行效果 89 习题6 91 第7章 React组件的组合和继承 92 7.1 React组件的组合和继承概述 92 7.1.1 组合 92 7.1.2 继承 92 7.2 带样式的组合组件 93 7.2.1 引入包、样式和功能文件 93 7.2.2 定义样式 93 7.2.3 定义功能 94 7.2.4 带样式组件综合应用的运行效果 95 7.3 页面布局 96 7.3.1 定义样式和功能 96 7.3.2 运行效果 98 7.4 特例关系组合 99 7.4.1 定义样式和功能 99 7.4.2 运行效果 100 7.5 类组合 101 7.5.1 定义样式和功能 101 7.5.2 运行效果 103 习题7 104 第二部分 高阶篇 第8章 React使用Hook增强组件 107 8.1 Hook概述 107 8.1.1 Hook 107 8.1.2 Hook API 108 8.1.3 自定义Hook 109 8.1.4 Hook的使用规则 109 8.2 State Hook的应用 110 8.2.1 创建项目reactjsbook 110 8.2.2 修改文件index.js 113 8.2.3 创建组件 113 8.2.4 运行项目reactjsbook 114 8.2.5 useState()函数的应用说明 115 8.2.6 State Hook的等价实现 115 8.3 State Hook的综合应用 116 8.3.1 创建组件 116 8.3.2 运行项目reactjsbook 119 8.4 Effect Hook的应用 119 8.4.1 说明 119 8.4.2 创建文件HookExample2.js 120 8.4.3 Effect Hook的等价实现 121 8.4.4 创建组件 122 8.4.5 修改文件index.js 124 8.4.6 运行项目reactjsbook 125 8.5 其他Hook的应用 125 8.5.1 useState()函数应用 125 8.5.2 useReducer()函数应用 126 8.5.3 useMemo()函数应用 127 8.5.4 useRef()函数应用 128 8.5.5 创建组件 128 8.5.6 修改文件index.js 129 8.5.7 运行项目reactjsbook 129 习题8 130 第9章 React基础原理和高级指引 131 9.1 React基础原理 131 9.1.1 选择性地使用React 131 9.1.2 JSX表示对象 131 9.1.3 类组件的执行顺序 133 9.1.4 异步编程 135 9.1.5 Fiber 135 9.1.6 模块 136 9.2 React应用开发的一般步骤 136 9.2.1 将UI界面分解为组件 136 9.2.2 实现应用程序的静态版本 136 9.2.3 确定state 137 9.2.4 确定state的放置位置 137 9.2.5 添加反向数据流 137 9.3 React片段 138 9.3.1 说明 138 9.3.2 创建组件 138 9.3.3 修改文件index.js 140 9.3.4 运行项目reactjsbook 140 9.4 context 141 9.4.1 说明 141 9.4.2 创建组件 142 9.4.3 修改文件index.js 144 9.4.4 运行项目reactjsbook 144 9.5 高阶组件 145 9.5.1 说明 145 9.5.2 创建组件 145 9.5.3 修改文件index.js 146 9.5.4 运行项目reactjsbook 147 9.6 ref转发 147 9.6.1 说明 147 9.6.2 创建组件 148 9.6.3 修改文件index.js 149 9.6.4 运行项目reactjsbook 149 9.7 portal 149 9.7.1 说明 149 9.7.2 创建组件 150 9.7.3 修改文件index.js 151 9.7.4 运行项目reactjsbook 152 9.8 ref和DOM 152 9.8.1 说明 152 9.8.2 创建组件 153 9.8.3 修改文件index.js 156 9.8.4 运行项目reactjsbook 156 9.9 Web Component 157 9.9.1 说明 157 9.9.2 创建组件 157 9.9.3 修改文件index.js 158 9.9.4 运行项目reactjsbook 158 9.10 render props 159    9.10.1 说明 159    9.10.2 创建组件 159    9.10.3 修改文件index.js 164    9.10.4 运行项目reactjsbook 164 9.11 错误边界 164    9.11.1 说明 164    9.11.2 创建组件 165    9.11.3 修改文件index.js 166    9.11.4 运行项目reactjsbook 167 9.12 测试 167    9.12.1 说明 167    9.12.2 测试简单示例 167    9.12.3 异步测试示例 169    9.12.4 mock测试示例 171    9.12.5 事件测试示例 173 习题9 174 第10章 React应用开发的工具 176 10.1 包管理器 176    10.1.1 NPM 176    10.1.2 Yarn 177 10.2 安装React 177    10.2.1 CDN链接 177    10.2.2 Create React App 178 10.3 编译器和编辑器 178    10.3.1 Babel 178    10.3.2 ESLint 178    10.3.3 Prettier 179    10.3.4 PropTypes 179 10.4 构建工具 179    10.4.1 webpack 179    10.4.2 Parcel 179 10.5 服务器端渲染工具 180    10.5.1 Next.js 180    10.5.2 Razzle 180    10.5.3 Gatsby 181 10.6 React Router 181    10.6.1 说明 181    10.6.2 创建组件 181    10.6.3 修改文件index.js 183    10.6.4 运行项目reactjsbook 183 习题10 184 第三部分 实战篇 第11章 React与Redux的整合开发 187 11.1 React与Redux概述 187    11.1.1 Redux动机 187    11.1.2 Redux核心内容 187    11.1.3 React与Redux对比 189 11.2 计数器的开发 189    11.2.1 创建action 189    11.2.2 创建reducer 190    11.2.3 创建组件 190    11.2.4 修改文件index.js 191    11.2.5 运行项目reactjsbook 192 11.3 待办事项管理小工具的开发 192    11.3.1 创建action 192    11.3.2 创建reducer 193    11.3.3 创建组件 194    11.3.4 修改文件index.js 198    11.3.5 运行项目reactjsbook 198 习题11 200 第12章 React与Spring Boot的整合开发 201 12.1 Spring Boot简介 201    12.1.1 Spring的构成 201    12.1.2 Spring Boot的特点 201 12.2 Spring Boot作为后端的开发 202    12.2.1 创建项目backendforreactjs 202    12.2.2 创建类和接口 203    12.2.3 修改后端配置文件 205    12.2.4 数据库文件db_mediablog.sql 206    12.2.5 运行后端Spring Boot程序 206 12.3 React作为前端的开发 206    12.3.1 修改文件index.js 206    12.3.2 创建组件 207    12.3.3 修改前端配置文件 208    12.3.4 运行前端React程序 209 习题12 210 第13章 React与Python框架的整合开发 211 13.1 React与Django的整合开发 211    13.1.1 Django作为后端开发 211    13.1.2 运行后端Django程序 214    13.1.3 React作为前端开发 215    13.1.4 运行前端React程序 218 13.2 React与Flask的整合开发 220    13.2.1 Flask作为后端开发和运行后端Flask程序 220    13.2.2 React作为前端开发 221    13.2.3 运行前端React程序 221    13.2.4 打包前端React程序代码并手工复制到后端 222    13.2.5 运行后端Flask程序 222 习题13 223 第14章 React与Go的整合开发 224 14.1 Go作为后端的开发 224    14.1.1 创建项目server和入口文件 224    14.1.2 创建API 225    14.1.3 创建工具类 228    14.1.4 创建数据库处理类 229    14.1.5 创建数据类型 231    14.1.6 数据库文件godatabase.sql 232    14.1.7 运行后端Go程序 232 14.2 React作为前端的开发 233    14.2.1 创建项目并修改文件index.js 233    14.2.2 创建用户界面 233    14.2.3 创建组件 234    14.2.4 运行前端React程序 236 习题14 237 第15章 案例——实现一个简易的员工信息管理系统 238 15.1 Spring Boot作为后端的开发 238    15.1.1 创建项目excase和实体类 238    15.1.2 创建DAO层 240    15.1.3 创建Service层 241    15.1.4 创建Controller层 242    15.1.5 修改后端配置文件 243    15.1.6 数据库文件studywebsite.sql 243    15.1.7 修改后端入口类 244    15.1.8 运行后端Spring Boot程序 244 15.2 React作为前端的开发 244    15.2.1 修改文件App.js和App.css 244    15.2.2 创建组件 246    15.2.3 运行前端React程序 251 习题15 253 附录 254 参考文献 255 VI VII