首页 > 其他分享 >react理论总结1

react理论总结1

时间:2024-05-08 18:01:33浏览次数:35  
标签:总结 调用 dom 理论 绑定 react state 组件

 

1)对react的理解(特点)

1, Jsx js+xml ,是对js语法的扩张,需要通过babel.js的编译转化成浏览器可以解析的普通js对象

2, 虚拟dom 。 相当于在js和真实dom之间的缓存, state改变 调用render函数会重新生成新的虚拟dom树,通过diff算法计算出新旧dom差异  只能差异部分更新到真实的dom,减少了对真实dom的操作,提高了性能

3, 单项数据流 , 数据只能通过父组件传给子组件 对于子组件来说只能使用propos不能修改;如果需要修改 需要在父组件定义函数,通过propos传递给子组件,在子组件中调用此函数,在父组件里面修改props(双向绑定)

4, 组件化思想,将整个ui按照功能解构成各个小组件  小组件嵌套组合成大组件  大组件构成页面,组件可以重复使用。

 

2)react 性能优化

1,性能优化是在shouldComponentUpdata 钩子里面是实现的

2,数据更新时立即执行这个函数  判断是否需要调用render函数,如果返回false就跳过此次更新 不再执行后面的生命周期钩子;如果返回true 才会调用render方法重新绘制dom,减少dom渲染的次数从而提高了性能。

3,但是组件的shouldcomponentUpdate()默认返回true,,需要自己重写这个钩子,增加判断,如果数据有变化,用新的state替换旧的state返回true, 否则返回false

4,pureComponent里面实现了重写shouldComponentUpdate(),对新旧state,props进行浅层对比,如果组件内部的state为对象或数组格式,当该对象或数组内部发生改动时,不能直接获取setState,这里必须使用解构赋值,将对象或数组内部展开,再重新赋值,才会改动

 

3react keys 的作用是什么?

Keys 是 react 用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识。在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯一性。

在 react Diff 算法中 react 会借助元素的 Key 值来判断该元素是新创建的还是被移动而来的元素,从而减少不必要的元素重渲染

4react refs 的作用是什么?

访问 DOM 元素或者某个组件实例从而调用组件实例的方法

5)调用setState 之后发生了什么?(必会)

调用 setState ,setstate是异步的,新的 state 并不会马上生效渲染组件。而是先看执行流中有没有在批量更新中,如果有就等待试图合并称成一次更新;

有则调用shouldcomponentUpdate()函数看其返回true的话执行

->render(进行 diff 运算,与上一次的虚拟 DOM 相比较,进行有效的渲染更新组件)

->react更新真实的dom和ref

->componentDidUpdate 获取到最新的 state 或 props

 

6)除了在构造函数中绑定 this,还有其它方式吗?(必会)

1 在constructor 中绑定this

2 在事件绑定时用bind绑定

3 在事件绑定时将事件放入箭头函数回调中(每次组件渲染时都会创建一个新的回调

4在定义事件阶段使用箭头函数绑定

7setState 第二个参数的作用?(必会)

第一个参数是要改变的 state 对象,

第二个参数是 state 导致的页面变化完成后的回调(箭头函数),等价于 componentDidUpdate

8)在构造函数中调用 super(props)的目的是什么?

调用super的原因:在ES6中,在子类的constructor中必须先调用super才能引用this   super(),就可以直接继承父类的属性和方法

super(props)的目的:在constructor中可以使用this.props

 

 

 

 

标签:总结,调用,dom,理论,绑定,react,state,组件
From: https://www.cnblogs.com/fanjiawen/p/18180432

相关文章

  • react ts 项目如何配置路径别名?
    tsconfig.json{"compilerOptions":{"baseUrl":".",//路径配置"paths":{"@/*":["src/*"]},"target":"ES2020","lib":[......
  • Lab2 - ADT&OOP 回顾总结
    Lab2-ADT&OOP回顾在忙于干活与忙于划水的薛定谔叠加态中度过一个月后想起了博客,考虑到如果自己再不回顾之前的实验+复习软件构造内容就要和肯尼迪和安倍晋三一桌打复活赛结果会很悲惨的情况,决定打开博客开始码字。现在对Lab2-ADT&OOP的内容进行回顾目录Lab2-ADT&OOP回......
  • 字符串总结
    哈希用于比较两个字符串是否相等;本质就是把一个字符串看成一个base进制的数(base自定),每一位是这一位的字符对应的$ASCII$值,在比较时只需判断这两个数(即哈希值)是否相等即可;一般的,base会选一个质数(200+即可),很容易发现,一个字符串的哈希值是很大的,所以要进行取模;Hash冲突当Has......
  • React Hooks 入门教程【阮一峰】
    组件类的缺点React的核心是组件。早前版本,组件的标准写法是类。//一个简单的组件类importReact,{Component}from"react";exportdefaultclassButtonextendsComponent{constructor(){super();this.state={buttonText:"Clickme,please"};......
  • TS — 在React中使用TS(基础使用)
    在React中使用TypeScript(TS)是一种很常见的做法,因为TypeScript提供了静态类型检查和其他一些有用的功能,可以帮助您更好地开发和维护React应用。1.原始组件://SimpleComponent.jsimportReactfrom'react';constSimpleComponent=({name})=>{return<div>Hel......
  • react中的state值修改了,也触发了页面的重新渲染,但是视图没有更新,可能是什么原因?
    state更新的是一个值List,但是页面渲染使用的是List中的某一项(当前选中项curItem),也定义成了state,而更新状态时,只更新了List,忽视了当前选中项curItem的状态更新,导致视图没有更新,即使组件重新渲染了,但是视图中使用的是curItem解决方案:state中不要保存当前选中项curItem,而应该保......
  • Git使用经验总结5-修改提交信息
    还是先说说这个这样做的目的为什么。除了正常的进行代码变更说明修改,更重要的是Git提交的时候能够触发一些操作,例如在Github上提交close#24这样的关键字可以将提交关联到具体的issue上,这样可以让变更关联到具体的需求或者讨论上。但是很多时候我们很容易忘记进行这种关联,就需要修......
  • Git使用经验总结4-撤回上一次本地提交
    这个问题的意义在于,Git提交代码是先提交到本地,然后再推送到远端。一些比较严格的Git仓库会有一些代码提交检查,一旦检查到问题就会禁止提交。那么这个时候就尴尬了,本地已经提交了,但是远端又推送不上去。基于当前版本作修改再提交也不一定能推送成功,因为只要提交了,提交记录就会被检......
  • 用这个开源工具在 React 中建立一个交互式时间轴
    用这个开源工具在React中建立一个交互式时间轴作者: KarolKozer 译者: LCTT geekpi |2023-02-2409:22     Planby是一个JavaScript组件,用于帮助创建流媒体服务、音乐和体育赛事等的时间表、时间线和电子节目指南(EPG)。几年来,我在电视在线和视频点播(VOD......
  • react useEffect可以作为watch监听值变化,进行其他操作用吗
    是的,React中的useEffectHook可以被用来作为“watch”监听特定变量或状态的变化,并在这些值发生变化时执行特定的操作。这是通过在useEffect的依赖数组中列出你想要监听的值来实现的。当依赖数组中的某个值发生变化时,useEffect的回调函数会被重新执行。下面是一个简单的例子,展示......