「Reactハンズオンラーニング第2版」的个人总结
这篇文章是我为了自己的书籍总结而撰写的。
《React实战教程第2版-Web应用程序开发的最佳实践》
欢迎来到React的世界,这是第一章。
使用React开发工具这个扩展功能,可以查看网站中使用React开发的组件树的内容。通过查看其他网站的实现方式,可以用于学习目的。
npm和yarn的区别
原本来说,Yarn在速度和安全性方面比npm更优秀,但现在两者几乎没有太大区别。此外,也提供了将npm切换到Yarn的命令选项。
需要掌握的JavaScript知识对于学习React的第2章
varではブロックスコープを持たないので変数を定義するときはletを使用した方がわかりやすい.
関数宣言では呼び出しの巻き上げが可能だが、関数をcosntに代入する関数式では巻き上げができない.
アロー関数をインラインで記述するときは戻り値のオブジェクトを()で囲む必要がある.(Reactでよくあるエラー)
アロー関数とスコープとして、アロー関数内でのthisの使用は気を付ける.(アロー関数は通常の関数と違って独自のスコープを持たないので、アロー関数の外側と内側でスコープが保持されるから)
JavaScript的编译(转译)由Babel执行,但由于与诸如webpack之类的工具结合在一起,开发人员很少直接关注Babel,并且通常编译过程是由工具自动化的。
解构赋值是一种功能,可以在将对象或数组分配给变量或接收它们时,选择只需的属性(即使是嵌套的属性也可以)。例如,{ spouse: { firstname } } 表示只选择名为 spouse 的对象中的 firstname 属性。
当针对数组时,可以通过 [, second] = [“a”, “b”] 来访问第二个元素。
如果将变量描述为对象的属性值,可以省略属性名。
扩展语法-用于连接数组、创建副本以适应破坏性方法、获取剩余所有内容当数组元素数量未知时,并用作函数参数接受任意数量(剩余参数)。
异步处理
承诺和取回:取回返回一个承诺对象,表示待定(Pending)、成功(Resolved)或失败(Rejected)。
async/await:这个特性同样能处理Promise,但是不需要使用.then,而是通过添加await来等待Promise成功后再进行处理。
通过使用Promise,可以简洁地编写异步处理。而且,由于JS是一种主要用于异步处理的语言,Promise在其中扮演的角色非常重要,对于今天的JS开发人员来说,掌握Promise的使用已经成为必备的技能。
ECMAScript模块 – 添加export或default export以便在其他文件中使用。
通用JS模块-在ECMAScript模块出现之前使用的模块模式。使用export和require。
第三章:JavaScript中的函数式编程
在JavaScript中,函数是一等对象,可以将函数作为数据存储在变量中,并且可以在应用程序内自由地移动。
高阶函数 – 一种函数接受另一个函数作为参数或返回函数作为返回值的情况。如果在JS中存在多个连续箭头的函数,可以认为是高阶函数。
React是一种声明式编程,而不是命令式编程。
宣言式编程 – 通过将详细步骤抽象化和隐藏,仅描述“想要做什么”。
纯函数是指仅根据参数的值进行计算,并返回结果的函数。
在函数式编程中,纯函数是一个核心概念。纯函数的特点是不会改变应用状态,这带来了许多附加好处(例如,在不修改可变数据的情况下进行拷贝修改)。下次使用时请注意以下事项。
-
- 函数必须至少接受一个参数
-
- 函数必须返回一个值或者是另一个函数作为返回值
- 函数不得直接修改参数或在函数外定义的变量
纯函数的测试很简单。
数据转换
为了不破坏环境,在React中使用非破坏性方法(当使用破坏性方法时,需改用扩展语法)
○ Array.filter, Array.join, Array.map, Array.reduce(Right) (× Array.pop, Array.splice)
通过使用高阶函数、递归和函数的组合,可以创建没有副作用的纯函数,实现易于测试和可重复使用的优秀实现。React强烈受到这种函数式编程的影响。
第四章 React 的基本原理
要在浏览器中运行React,至少需要两个库:React和React-dom。
React是一个可以代替开发者直接调用DOM API的库。开发者不需要直接使用DOM API来实现单页应用程序,而是传递给React一个描述了想要实现的行为的指令(称为React元素)的指示书。
React的实体是一个描述如何构建DOM元素的JS对象。
使用React.createElement在非JSX文件(js)中。
第五章 React与JSX
可以通过 JSX 编写简洁的代码,但不能在浏览器中直接运行该代码,所有的 JSX 标签在执行之前都会被 Babel 转换为 createElement 的调用。
在包含JSX的