当前位置: 首页 > news >正文

React入门简介

React简介

        react是Facebook用来创建用户界面的js库。React不是一个MVC框架,而是一个用于构建组件ui库,是一个前端界面开发工具,所以很多人认为React是MVC中的V(视图)。React的存在能够很好的解决‘构建随着时间数据不断变化的大规模应用程序’,react能够引导我们重新思考如何构建应用程序。react的核心就是封装可复用性高的组件,各个组件维护自己的状态和ui,当状态更新,自动重新渲染整个组件。

        前端主流框架有vue、react、angular。vue和react是受欢迎程度最高的框架,是MMVM框架(视图模型),angular忧郁革命性太高,每次一个新版本发布之后总是覆盖之前的版本,因此维护成本很高。

React核心思想 

React的哲学以及核心思想是封装组件,各个组件维护自己的状态和ui,当状态更改,自动更新渲染整个组件。
基于这种方式的一个直观感受就是我们不再需要不厌其烦地来回查找某个dom元素,然后操作dom更改UI

 React包含的概念

1.组件

//函数式组件
function Hello(){retrun <h1>Hello,fxt</h1>
}
ReactDOM.render(<Hello>,
docoment.getElementById('root1')
)

        react应用都是构建在组件智商,上面的Hello就是一个React构建的组件,render方法会把这个组件显示在页面的上的某个原色mountNode里面,显示的内容就是<h1>Hello,fxt</h1>。

        在组件中有两个比较核心概念是props和state,这里没有进行展示,后面会学习到。props主要用来进行传值,state主要用来定义组件内部的状态。

 2.jsx

从上面的代码中可以看到HTML代码直接嵌入进js代码里面,这个就是react中的jsx语法,能够在HTML中写js,也能够在js中写HTML。对于vue重度爱好者来说使用react是非常痛苦的意见事。因为前端一直都以‘结构样式行为相分离’未开发思想,而React恰恰是让js中嵌入HTML。

3、virtual Dom 

        当组件状态state有更改的时候,react会自动调用组件的render方法重新渲染整个组件的UI。当然如果真的这样大面积的操作dom,性能会是一个很大的问题,所以React实现了一个virtual Dom ,组件dom结构就是映射到这个virtual Dom上。

        react在这个虚拟dom中实现了diff算法,当要重新渲染组件的时候,会通过diff寻找要变更的dom节点,再把这个修改更新到浏览器实际的dom节点上,所有实际上不是真的渲染整个dom树。这个虚拟dom是一个纯粹的js数据结构,所以性能上会比原生的dom快很多。以往的js或者jquery都是通过大量操作dom,或导致渲染时间很慢。react不会直接去操作dom,而是用modle来代替dom,用js生成虚拟的dom树,只有在最后一次才对dom进行操作。

4、Data Flow

‘单向数据绑定’是react推崇的一种应用架构的方式。当应用足够复杂时才能体会到它的好处,虽然在一般场景下我们可能会意识不到它的存在,但不影响使用react,我们只需要了解这个概念。

相关文章:

React入门简介

React简介 react是Facebook用来创建用户界面的js库。React不是一个MVC框架&#xff0c;而是一个用于构建组件ui库&#xff0c;是一个前端界面开发工具&#xff0c;所以很多人认为React是MVC中的V&#xff08;视图&#xff09;。React的存在能够很好的解决‘构建随着时间数据不断…...

强化学习_06_pytorch-PPO实践(Hopper-v4)

一、PPO优化 PPO的简介和实践可以看笔者之前的文章 强化学习_06_pytorch-PPO实践(Pendulum-v1) 针对之前的PPO做了主要以下优化&#xff1a; batch_normalize: 在mini_batch 函数中进行adv的normalize, 加速模型对adv的学习policyNet采用beta分布(0~1): 同时增加MaxMinScale …...

Scala Intellij编译错误:idea报错xxxx“is already defined as”

今天写scala代码时,Idea报了这样的错误&#xff0c;如下图所示&#xff1a; 一般情况下原因分两种&#xff1a; 第一是我们定义的类或对象重复多次出现&#xff0c;编译器无法确定使用哪个定义。 这通常是由于以下几个原因导致的&#xff1a; 重复定义&#xff1a;在同一个文件…...

面试笔记系列五之MySql+Mybaits基础知识点整理及常见面试题

myibatis执行过程 1读取MyBatis的配置文件。 mybatis-config.xml为MyBatis的全局配置文件&#xff0c;用于配置数据库连接信息。 2加载映射文件。映射文件即SQL映射文件&#xff0c;该文件中配置了操作数据库的SQL语句&#xff0c;需要在MyBatis配置文件mybatis-config.xml中…...

掌握Pillow:Python图像处理的艺术

掌握Pillow&#xff1a;Python图像处理的艺术 引言Python与图像处理的概述Pillow库基础导入Pillow库基本概念图像的打开、保存和显示 图像操作基础图像的剪裁图像的旋转和缩放色彩转换和滤镜应用文字和图形的绘制 高级图像处理图像的合成与蒙版操作像素级操作与图像增强复杂图形…...

React最常用的几个hook

React最常用的几个Hook包括&#xff1a;useState、useEffect、useRef以及useContext。 useState&#xff1a; 用于在函数组件中添加状态管理。它返回一个数组&#xff0c;第一个元素是当前状态的值&#xff0c;第二个元素是更新状态的函数。在使用时&#xff0c;可以通过解构赋…...

自然语言处理Gensim入门:建模与模型保存

文章目录 自然语言处理Gensim入门&#xff1a;建模与模型保存关于gensim基础知识1. 模块导入2. 内部变量定义3. 主函数入口 (if __name__ __main__:)4. 加载语料库映射5. 加载和预处理语料库6. 根据方法参数选择模型训练方式7. 保存模型和变换后的语料8.代码 自然语言处理Gens…...

Windows 10中Visual Studio Code(VSCode)无法自动打开终端的解决办法

1.检查设置&#xff1a; 打开VSCode。点击左侧菜单栏的“文件”&#xff08;File&#xff09;。选择“首选项”&#xff08;Preferences&#xff09;。点击“设置”&#xff08;Settings&#xff09;。在搜索框中输入“shell”&#xff0c;然后点击“settings.json”进行编辑。…...

python dictionary 字典中的内置函数介绍及其示例

Python字典内置方法&#xff1a; 本文介绍了Python字典&#xff08;dictionary&#xff09;中的内置函数及其用法示例。字典是Python中非常常用的一种数据结构&#xff0c;它允许我们通过键&#xff08;key&#xff09;来快速查找、添加、修改或删除值&#xff08;value&#…...

pdf转word文档怎么转?分享4种转换方法

pdf转word文档怎么转&#xff1f;在日常工作中&#xff0c;我们经常遇到需要将PDF文件转换为Word文档的情况。无论是为了编辑、修改还是为了重新排版&#xff0c;将PDF转为Word都显得尤为重要。那么&#xff0c;PDF转Word文档怎么转呢&#xff1f;今天&#xff0c;就为大家分享…...

深度测试:指定DoC ID对ES写入性能的影响

在[[使用python批量写入ES索引数据]]中已经介绍了如何批量写入ES数据。基于该流程实际测试一下指定文档ID对ES性能的影响有多大。 一句话版 指定ID比不指定ID的性能下降了63%&#xff0c;且加剧趋势。 以下是测评验证的细节。 百万数据量 索引默认使用1分片和1副本。 指定…...

【JGit】 AddCommand 新增的文件不能添加到暂存区

执行git.add().addFilepattern(".").setUpdate(true).call() 。新增的文件不能添加到暂存区&#xff0c;为什么&#xff1f; 在 JGit 中&#xff0c;setUpdate(true) 方法用于在调用 AddCommand 的 addFilepattern() 方法时&#xff0c;将已跟踪文件标记为需要更新。…...

golang学习6,glang的web的restful接口传参

1.get传参 //get请求 返回json 接口传参r.GET("/getJson/:id", controller.GetUserInfo) 1.2.接收处理 package controllerimport "github.com/gin-gonic/gin"func GetUserInfo(c *gin.Context) {_ c.Param("id")ReturnSucess(c, 200, &quo…...

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆&#xff0c;这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator&#xff08;观察者&#xff09;&#xf…...

HarmonyOS | 状态管理(八) | PersistentStorage(持久化存储UI状态)

系列文章目录 1.HarmonyOS | 状态管理(一) | State装饰器 2.HarmonyOS | 状态管理(二) | Prop装饰器 3.HarmonyOS | 状态管理(三) | Link装饰器 4.HarmonyOS | 状态管理(四) | Provide和Consume装饰器 5.HarmonyOS | 状态管理(五) | Observed装饰器和ObjectLink装饰器 6.Harmo…...

Git 突破 文件尺寸限制

前言 当Git本地存储里右超过50MB&#xff0c;却又确实需要上传的时候&#xff0c;就需要用到了不是 解决 本代码就是把大文件进行拆解成小文件&#xff0c;然后上传。 等到拉取下来的时候&#xff0c;可以直接再进行合并&#xff0c;合并成原文件 代码如下&#xff0c;仅供…...

HarmonyOS开发云工程与开发云函数

创建函数 您可直接在DevEco Studio创建函数、编写函数业务代码、为函数配置调用触发器。 1.右击“cloudfunctions”目录&#xff0c;选择“New > Cloud Function”。 2.输入函数名称后&#xff0c;点击“OK”。 函数名称仅支持小写英文字母、数字、中划线&#xff08;-&a…...

SpringMVC了解

1.springMVC概述 Spring MVC&#xff08;Model-View-Controller&#xff09;是基于 Java 的 Web 应用程序框架&#xff0c;用于开发 Web 应用程序。它通过将应用程序分为模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&a…...

day44((VueJS)路由的懒加载使用 路由的元信息(meta) 路由守卫函数 vant组件库的应用)

一.路由懒加载的使用 使用原因 1.使用原因1&#xff09; 使用一般写法&#xff08;即直接填写组件的缺点&#xff09;当使用这种写法&#xff0c;页面在初次加载会将所有路由配置表的添加的组件一次性全部加载&#xff0c;如果项目中组件代码量庞大&#xff0c;就需要很长时间…...

非线性优化资料整理

做课题看了一些非线性优化的资料&#xff0c;整理一下&#xff0c;以方便查看&#xff1a; 优化的中文博客 数值优化|笔记整理&#xff08;8&#xff09;——带约束优化&#xff1a;引入&#xff0c;梯度投影法 (附代码)QP求解器对比对于MPC的QP求解器 数值优化| 二次规划的…...

数据结构(四) 栈和队列 超详细讲解(原理 + 完整代码 + 算法题)

数据结构(四) 栈和队列 超详细讲解&#xff08;原理 完整代码 算法题&#xff09; 栈和队列是数据结构中最基础、最常用的两种线性结构&#xff0c;掌握它们是学习算法、操作系统、编译原理的基础。本文带你从概念 → 结构实现 → 高频算法题一站式吃透。 文章目录数据结构(…...

安全运营中心中的威胁狩猎与事件调查

安全运营中心中的威胁狩猎与事件调查 在数字化时代&#xff0c;网络安全威胁日益复杂&#xff0c;攻击手段层出不穷。安全运营中心&#xff08;SOC&#xff09;作为企业网络安全的核心防线&#xff0c;不仅需要被动响应安全事件&#xff0c;还需主动开展威胁狩猎与事件调查&am…...

探索现代PyQt/PySide界面设计:从开源项目汲取灵感

1. 为什么需要从开源项目学习界面设计&#xff1f; 刚开始用PyQt或PySide做界面时&#xff0c;我总觉得自己设计的UI特别"土"——按钮排列死板、配色辣眼睛、交互反人类。后来发现&#xff0c;直接研究成熟的开源项目是最快的学习方式。这些项目往往经过多次迭代&…...

GitHub 功能全解析:涵盖平台、解决方案、资源等多方面

1. 平台在平台方面&#xff0c;AI 代码创作包含多个工具&#xff0c;如 GitHub Copilot 可借助 AI 编写更优质的代码&#xff0c;GitHub Spark 能构建并部署智能应用&#xff0c;GitHub Models 用于管理并比较提示词&#xff0c;MCP Registry 新功能可集成外部工具。开发者工作…...

SketchUp场景卡顿救星:用‘组件’和‘面片植物’优化大型场景的实战技巧

SketchUp大型场景优化实战&#xff1a;用组件与面片植物打造流畅工作流 当你的SketchUp模型开始像老式拖拉机一样嘎吱作响&#xff0c;旋转视图时卡成PPT&#xff0c;是时候重新思考建模策略了。我曾参与过一个占地12公顷的度假村项目&#xff0c;初始模型包含2000多棵3D树木和…...

OrigamiSimulator:如何在浏览器中实现实时3D折纸模拟与应力分析?

OrigamiSimulator&#xff1a;如何在浏览器中实现实时3D折纸模拟与应力分析&#xff1f; 【免费下载链接】OrigamiSimulator Realtime WebGL origami simulator 项目地址: https://gitcode.com/gh_mirrors/or/OrigamiSimulator 想象一下&#xff0c;你设计了一个复杂的折…...

不止于数据上传:基于阿里云和EC600S 4G模块,给你的STM32项目加上远程短信/电话告警功能

从数据上传到主动告警&#xff1a;基于STM32与EC600S的智能远程监控系统进阶设计 在物联网项目开发中&#xff0c;数据上传功能已成为基础配置&#xff0c;但真正的商业价值往往体现在异常事件的即时响应能力上。想象一下&#xff1a;当工业设备温度超标时&#xff0c;系统不仅…...

告别懵圈!用Python手把手解析RTCM MSM消息(附完整代码)

从零实现RTCM MSM消息解析&#xff1a;Python实战指南 在卫星导航定位领域&#xff0c;RTCM协议就像一座连接原始观测数据与应用解决方案的桥梁。当我第一次尝试解析MSM消息时&#xff0c;那些复杂的位掩码和分层数据结构确实让人望而生畏——直到我意识到&#xff0c;只要掌握…...

如何用IDM激活脚本实现永久试用:简单三步搞定下载加速神器

如何用IDM激活脚本实现永久试用&#xff1a;简单三步搞定下载加速神器 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager&#xf…...

StarUML 4.0.1导出清晰UML图,手把手教你修改JS文件去除烦人水印

StarUML 4.0.1导出清晰UML图的完整解决方案 你是否遇到过这样的困扰&#xff1a;精心设计的UML图在导出时被强制添加了"未注册"水印&#xff0c;严重影响专业文档的呈现效果&#xff1f;这个问题困扰着许多使用StarUML进行软件设计的开发者和学生。本文将为你提供一个…...