《深入react技术栈》看书总结01

news/2024/6/15 13:52:38 标签: react.js

最近觉得react的知识之前跟着视频学了,有些知识点容易忘,有些又理解的不透彻,就发现了这本书,大致浏览了一下,比我之前看的学习视频讲的更透彻。好记性不如烂笔头,我大致罗列一些我在书上划的重点。

第一章相关知识点:

1.react专注视图层。react不是完整的MVC/MVVM框架,它专注于提供清晰、简洁的view(视图)层解决方案。而又与模板引擎不同,react不仅专注于解决view层的问题,又是包括view和controller的库。

2.虚拟元素的构建和更新都是在内存中完成的,并不会真正渲染到DOM中去。在react中创建的虚拟元素可以分为两类:DOM元素和组件元素,分别对应着原生dom元素与自定义元素。

3.属性表达式checked={}、disabled={}、required={}、readOnly={}

4.javascript属性表达式,只要用{}替换“”即可

5.react组件的创建方法有3种:React.createClass |es6 classes |无状态函数

React.createClass是最传统也是兼容性最好的方法,const button=React.createClass({

})

es6 classes 与createclass结果相同的是,调用类实现的组件会创建实例对象

无状态函数

使用无状态函数构建的组件叫做无状态组件,且官方颇为推崇

function Button({color='blue',text='confirm'}){

return(

<button className={`btn btn-${color}`}>

  <em>{text}</em>

</button>

)

}

无状态组件只传入props和context两个参数:不存在state,也没有生命周期方法。无状态组件不像上述两种方法在调用时会创建新实例,它创建时始终保持了一个实例,避免了不必要的检查和内存分配,做到了内部优化。

6.react数据是自顶向下单向流动的。

如果顶层组件初始化props,那么react会向下遍历整颗组件树,重新尝试渲染所有相关的子组件。

而state只关心每个组件自己内部的状态,这些状态只能在组件内改变。把组件看作一个函数,那么它接受了props作为参数,内部由state作为函数的内部参数,返回一个virtual dom的实现

7.当组件内部使用库内置的setstate方法时,最大的表现就是该组件会尝试重新渲染

注意:setstate是一个异步方法,一个生命周期内所有的setstate方法会合并操作

8.props本身是不可变的,组件的props一定来自于默认属性或通过父组件传递而来

9.componentwillmount方法会在render方法之前执行,componentdidmount方法会在render方法之后执行,分别代表了渲染前后的时刻。这些只会在组件初始化时运行一次。

10.componentwillmount中执行setstate方法,组件会更新state,但组件只会渲染一次;

componentdidmount中执行setstate方法,组件会渲染两次;

如果组件自身的state更新了,会一次执行

shouldcomponentupdate--->componentwillupdate--->render--->componentdidupdate

 11.

 12.refs可以附加到任何一个组件上,组件被调用时会新建一个该组件的实例,而refs就会指向这个实例,它可以是一个回调函数,这个回调函数会在组件被挂载后立即执行。refs也支持字符串型的


http://www.niftyadmin.cn/n/1497568.html

相关文章

Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载

Unity 3D 简单工程的创建。与Xcode 导出到iOS 平台请看这 Unity3D 学习 创建简单的按钮、相应事件 Unity C# 代码 using UnityEngine; using System.Collections; using System.Runtime.InteropServices;public class testFeil : MonoBehaviour {[DllImport("__Internal&…

python中根号下a怎么写_python中根号怎么表示

python中根号怎么表示,平方根,方法,实例,数字,表达式python中根号怎么表示易采站长站&#xff0c;站长之家为您整理了python中根号怎么表示的相关内容。sqrt() 方法返回数字x的平方根。以下是 sqrt() 方法的语法:(推荐学习&#xff1a;Python视频教程)import mathmath.sqrt( x …

ubuntu远程登陆mysql_Ubuntu下MySQL不能远程登录的解决

Q: 当在另一台机器上登录MySQL时出现如下错误&#xff1a;ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x (111)A: 原因是MySQL考虑到安全因素&#xff0c;默认配置只让从本地登录打开 /etc/mysql/my.cnf 文件&#xff0c;找到 bind-address 127.0.0.1 修改为 …

python - 6. Defining Functions

From:http://interactivepython.org/courselib/static/pythonds/Introduction/DefiningFunctions.html Defining Functions For example: >>> def square(n): ... return n**2 ... >>> square(3) 9 >>> square(square(3)) 81 >>> 转载于:h…

mysql同时更新2个表_mysql中同时update更新多个表

本节内容&#xff1a;在mysql数据库中实现update同时更新多个表。1&#xff0c;同时更新的多个表之间无联系统复制代码 代码示例:update table1 t1,table2 t2 set t1.a1,t2.b2 where t1.id1 and t2.id12&#xff0c;同时更新的多个表之间存在关系复制代码 代码示例:use mytest;…

插件显示缩进_我在 IntelliJ IDEA 中必有得插件和配置

| 好看请赞&#xff0c;养成习惯你有一个思想&#xff0c;我有一个思想&#xff0c;我们交换后&#xff0c;一个人就有两个思想If you can NOT explain it simply, you do NOT understand it well enough现陆续将Demo代码和技术文章整理在一起 Github实践精选 &#xff0c;方便…

vue学习Day05

1.created&#xff08;&#xff09;表示data和methods方法都已经可用了&#xff0c;就可以去调方法 Mounted&#xff08;&#xff09;表示 内存中渲染好的dom树已经挂载到了真实的页面中。 在网页中&#xff0c;有一些第三方的插件需要初始化&#xff1b;使用jquery封装出的框…

mysql IF语句使用

类似于三元运算符 1) IF(where,result1,result2) where?result1:result2 例如 SELECT IF(11,1,2) > 1 2) IFNULL(result1,result2) result1 is not null?result1:result2 例如 SELECT IF(1,2) > 1   SELECT IF(null,2) > 2转载于:https://www.cnblogs.c…