React基础及其原理

React基础

 一、开始

我们一般在项目中 都会使用 React的脚手架 进行项目的初始化

最快捷的初始化方式就是运行

npx create-react-app 项目名

二、Jsx的基本使用

在react中  我们想要在页面中创建dom元素的方式有两种

1.使用createElement()

写着有点麻烦 一般不用 在此不演示

2.使用Jsx

我们更推荐Jsx后面这个( )的书写方式 

这样写的好处可以避免js自动插入分号的陷阱

三、嵌入js表达式

一般情况下,我们只需要使用{ } 在这个括号里面书写js代码就行 包括 函数表达式 ,但是,我们

我们考虑到优化 不建议直接在里面把业务逻辑代码 写进去。

注:{ }里面不写  对象   除了style 的样式

四、创建组件的两种方式

 一种是函数组件

 函数组件又称无状态组件,负责静态结构的展示

直接funcation 创建 

另一种是类组件

类组件称为有状态组件 负责更新ui,让页面动起来

使用的就是es6的class

我们  在里面 可以  在里面 声明状态state  以及 抽离业务逻辑代码  并在jsx的dom中调用 等

五、组件间的传值

父组件给子组件传值

父组件提供state 数据 

子组件以props的形式接受

子组件给父组件传值

 父组件需要提供一个接受数据的方法

子组件在内部调用方法

 这样  就可以将值 传给父组件 

 兄弟组件组件传值

 思路就是  一上面的  父传子  子传父 为基础

我们将一个子组件的数据 先传给父组件   父组件再将 这个数据 传给 另一个 子组件就行了

隔代传值

如果  嵌套过多的话   就不建议使用  上边的方式  进行传值了

推荐使用Context

这个就是有点联系上下文的感觉

 

只需要用<provider>  和 <consumer>进行包裹  就可以实现数据的传递 还是比较方便的

children属性 

组件当有节点的时候就会有chiildren属性

children  属性  就是 一个特殊的props 属性 

 

 通过children属性也可以进行传值

六、受控组件

理解了上面的组件 我们来看一下受控组件

通过受控组件可以对 被控制的组件的值 进行控制

(题外话:可以类比vue中的v-model的感觉 )

七、props校验

进行props校验  可以在封装组件的时候 对传入组件中的数据类型进行控制, 如果  传入 不是这个组件props所需要的数据类型 组件可以进行具体的报错提示

以上这个就对传入App组件中的colors的数据类型  进行了限制 

具体使用 参考npm:prop-types - npm

 八、生命周期

 React的生命周期分为三个阶段

在创建时

在更新时 

 在卸载时

九、组件的复用

 这一块特别重要

分为:render props模式 和 高阶组件

这块可以参考:react 中render-props 模式和高阶组件_新时代农民工Top的博客-CSDN博客

 十、React路由

 SPA单页面应用程序的产生促使React路由的产生

它的使用需要安装react-router-dom这个包

截止到目前 最新版的 路由使用 和之前的不是太一样 

具体使用方法参考react-router-dom - npm

React原理

 React的setState()

 要想多次调用setState()  并且  每次调用都会有执行

并且  在这个基础上  我们还能在setState()以后 执行回调函数

Jsx借助Babel的转换机制

 Jsx 语法会转换成 createElement()的语法格式   然后再转成js的模式 最终渲染到页面上

组件的更新机制

 

 在这里谈谈优化:

可以将不必要的数据 储存在this上

 通过shouldComponentUpdate钩子函数解决不必要的更新

 

 这个在子组件props传值时这样使用

 但是我们可以不进行 以上这样的去使用shouldComponentUpdate钩子函数解决不必要的更新

 另一种方法是

使用纯组件

将react.component换成react.purecomponent

但是  在使用以上两种方法去处理数据更新变化监听时 的不必要更新时 

 对于引用数据类型 就是对象这种  我们对比的只是数据的存放地址  所以会出先错误

因此解决这种浅层的对比   我们只需要能够创建新的对象就行   坚持  数组也使用这种方法

 虚拟dom和diff算法

 react的更新视图的思想就是只要state发生变化  就重新渲染

 

 有了虚拟dom  就可以让js的运行在任何在地方,实现一次学习随处使用

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 React 框架的原理的一个好方法是从官方文档开始。React 官方网站提供了一些教程和文档,可以帮助您了解 React基础概念和用法。 首先,您可以阅读 React 的官方教程,了解 React 如何工作,包括它的基本概念、组件、状态和生命周期等。这将有助于您熟悉 React基础用法。 其次,您可以学习 React 的官方文档,深入了解 React 的各种功能和用法。React 官方文档中包含了大量的详细信息,可以帮助您了解 React 的详细原理。 此外,您还可以通过实践来加深对 React 的理解。您可以尝试使用 React 构建一些小型应用或者尝试在现有应用中使用 React。通过不断实践和探究,您可以进一步加深对 React 的理解。 另外,您还可以参加一些在线课程或者报名参加 React 相关的培训,从专业人士那里学习 React 的知识和技巧。这些方式可以帮助您更快地掌握 React,并且能够得到专业的指导和帮助。 ### 回答2: 学习React这门框架的原理可以按照以下步骤进行: 1. 学习JavaScript基础React是基于JavaScript语言的,因此首先需要熟悉JavaScript的基本语法、函数、对象等概念。了解JavaScript基础知识会有助于理解React的工作原理。 2. 学习React的核心概念:React的核心概念包括组件、虚拟DOM、状态和属性等。通过阅读React官方文档或相关教程,在编写简单的React组件时要了解这些概念的作用和用法。 3. 掌握React的生命周期:React组件具有生命周期,包括组件的创建、更新和销毁等阶段。掌握React的生命周期方法,比如`componentDidMount`、`componentDidUpdate`等,可以更好地理解组件是如何工作的。 4. 理解React的虚拟DOM:React通过虚拟DOM来实现高效的页面更新。了解虚拟DOM的概念和原理,以及与真实DOM的区别,对于优化性能和理解React工作原理很有帮助。 5. 阅读React源码:阅读React源码是学习其原理的最佳途径之一。通过查看React的源码,可以深入理解其内部实现机制,例如组件渲染、事件处理、状态更新等。 6. 实践项目:通过实践项目来应用和巩固学习的知识。可以尝试创建简单的React应用、组件库或其他前端项目,通过实践来加深对React原理的理解。 7. 参与社区:加入React社区,与其他开发者交流并学习。可以参与讨论、提问问题,获得更多关于React原理方面的经验和见解。 在学习React原理过程中,需要保持持续的学习和实践,并且不断关注最新的React版本和更新,以保持与时俱进。 ### 回答3: 学习React框架的原理主要分为以下几个步骤: 1. 掌握基础知识:学习React基础概念,包括组件、虚拟DOM、状态和属性等。理解React的思想和设计模式,学习React相关的JavaScript语法和ES6+特性。 2. 实践项目:选择一个小型的React项目,通过实际的编码过程来理解React的使用和原理。可以先从快速搭建React开发环境开始,然后逐步添加组件、处理事件和状态等。通过项目实践,深入理解React的工作原理。 3. 深入研究源码:阅读React的源代码是学习React原理的重要一环。可以从React的官方文档中找到源码地址,阅读和分析React的核心模块。重点关注虚拟DOM的实现以及组件的生命周期等。可以通过调试源码、查阅相关资料和参考优秀的开源实现等方式来加强理解。 4. 学习相关技术栈:React通常会和其他技术栈一起使用,如Webpack、Babel、Redux等。学习这些相关的技术可以更好地理解React原理及其与其他技术的结合。可以参考相关文档、教程和实践项目来学习这些技术。 5. 参与社区和交流:积极参与React的相关社区和交流平台,如官方论坛、GitHub等,与其他开发者交流、分享经验和学习资源。参与开源项目,审阅他人的代码,给出自己的建议和改进。通过与社区的互动,不断提升自己的技术水平。 总之,学习React原理需要结合理论和实践,通过实际的项目和阅读源码来加深对其原理的理解。同时,学习相关技术栈和积极参与社区交流也是提高React技术水平的重要途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值