React基础知识 精简全面 推荐

这篇博文主要对一些刚入门react框架的同学,以及对react基本知识进行巩固的,最后就是精简一下基本知识,以方便自己查看,感谢参考,有问题评论区交流,谢谢。

目录

1.JSX 

2.Props 和 State

3.组件生命周期

4.列表 和 Keys

5.事件处理

6.表单


没有配置React的同学请参考:React 开发环境搭建 超详细 全面 推荐-CSDN博客

1.JSX 
const  element = <h1>Hello,world!</h1> ;

这是一段jsx代码,语法看起来很像html,实际上jsx语法所用的标签可以使用html标签,也可以使用自定义的react组件作为jsx中的标签。

jsx可以使用变量,name就是一个变量,注意:变量要用大括号括起来 { }  

const  name = 'young';
const  element = <h1>Hello,{name}!</h1> ;
2.Props 和 State

这两个都是很重要的概念。react组件正常工作都需要依赖这两个组件,这两者都与react的状态有关系,两者的区别是 props是对外的,state是组件对内的接口。具体理解是

props是外部组件通过props将状态或者方法传递给当前组件来使用,所以props是父组件与子组件之间传递的接口;

state是组件内部的接口,用于维护组件内部的状态;

总之一句话 props是对外的,state是对内的。

3.组件生命周期

是react对外暴露出来的钩子函数,我们开发的时候可以在这些函数中定义一些逻辑,来实现业务功能逻辑。

这里分享几个常用的且比较重要的方法。

组件的挂载阶段:constructor(),render(),componentDidMount()

组件的更新阶段:render(),componentDidUpdate()

组件的卸载阶段:componentWillUnmount()

4.列表 和 Keys

渲染列表也是比较常用的,这里keys的值都是不相同的,为了保证当列表发生变化的时候react底层把key作为每一项的唯一标识。

const numbers = [ 1,2,3,4,5,6 ];
const listItems = numbers.map((number) = > \<li key={number.toString()} >{number}</li>
);
const todoItems = todos.map((todo) => <li key = {todo.id}>{todo.text}</li>
);
5.事件处理

5.1事件处理是和用户。进行交互必不可少的。注意react中事件名 onClick 是驼峰的写法C大写的 

html中事件<button onclick="addUser()"> add
</button>React 中添加事件
<button onClick={addUser}> add
</button>

5.2 事件this指向问题。在构建函数中有这一句 this.handleClick = this.handleClick.bind(this);

为这个handleClick绑定了 this ,这个this就是当前的组件,如果没有这一句话,this指向的是当前组件的event点击事件对象。

class Toggle extends React.Component {constructor(props){super(props);this.state = {isToggleOn: true};this.handleClick = this.handleClick.bind(this);}handleClick() {this.setState(preState => ({isToggleOn: !preState.isToggleOn}));}
}
render(){return (<button onClick={this.handleClick}>{this.state.isToggleOn? 'ON':'OFF'}</button>)
}

此外还有es6的箭头函数同样也能实现这种效果,即上面的代码handleClick绑定this部分 也能换成下面代码

handleClick = () => {console.log('this is:',this);
}
6.表单

我们可以通过使 React 的 state 成为 “单一数据源原则” 来结合这两个形式,然后渲染表单的 React 组件也可以控制在用户输入之后的行为。这种形式,其值由 React 控制的输入表单元素称为“受控组件”。

在使用表单组件的时候推荐使用组件受控的方式

下面的代码例子中input输入框中 绑定onChange事件,当用户输入修改输入框内容,会触发onChange事件,事件处理拿到用户修改后的数据赋值给state.value的值,state发生变化,组件会重新被渲染,render方法重新被执行,input中的 value={this.state.value}重新设置成新的value值。

这样就保证了value的值是通过state状态的管理。

class NameForm extends React.Component {constructor(props) {super(props);this.state = {value: ''};this.handleChange = this.handleChange.bind(this);this.handleSubmit = this.handleSubmit.bind(this);}handleChange(event) {this.setState({value: event.target.value});}handleSubmit(event) {alert('A name was submitted: ' + this.state.value);event.preventDefault();}render() {return (<form onSubmit={this.handleSubmit}><label>Name:<input type="text" value={this.state.value} onChange={this.handleChange} /></label><input type="submit" value="Submit" /></form>);}
}

有了这些基础知识来新建一个自己的React项目吧 React如何搭建开发环境 创建一个新项目:

React 开发环境搭建 超详细 全面 推荐-CSDN博客

有问题评论区欢迎交流,谢谢参考。

react实战项目请参考:react实战项目干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JAVA的美妆购物商城系统/美妆销售系统的设计与实现/美妆网站的设计与开发/在线美妆购物平台

摘 要 本毕业设计的内容是设计并且实现一个基于SSM框架的美妆购物商城系统。它是在Windows下&#xff0c;JSP技术&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。美妆购物商城系统的功能已基本实现&#xff0c;主要包括用户、商品信息、…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行使小车

目录 一、题目要求 二、参考资源获取 三、参考方案 1、环境搭建及工程移植 2、相关模块的移植 4、整体控制方案视频演示 5、视频演示部分核心代码 总结 一、题目要求 小编自认为&#xff1a;此次H题属于控制类题目&#xff0c;相较于往年较为简单&#xff0c;功能也算单一&…

科普文:『 码到三十五 』Java微服务中Token鉴权设计的4种方案

吐槽~~~~~~~ Java微服务中Token鉴权设计的几种方案: 1. JWT鉴权 「概述」&#xff1a;JWT是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。它基于JSON格式&#xff0c;包含三个部分&#xff1a;头部&#xff08;Header&#xff09;、负载&#xff08;Payload&a…

ubuntu Ubuntu 20.04.6 LTS 安装vtk 报错缺少opengl

ubuntu编译9.3.0 vtk报错 -- Could NOT find OpenGL (missing: OPENGL_opengl_LIBRARY OPENGL_glx_LIBRARY OpenGL) CMake Error at CMake/vtkModule.cmake:4793 (message): Could not find the OpenGL external dependency. Call Stack (most recent call first): CMake/vtkMo…

typescript 断言

/* 断言 确定后期一定是某种格式 可用于表单大对象初始化是空&#xff0c;赋值时有具体字段。前期断言是会是某种格式 */interface obj {name: stringlocation: stringage?: number }// 会报错 // let data: obj { // // } let data: obj {} as obj; // 断言data会有obj里…

PHP框架详解之Symfony框架

一、框架概述 起源与开发者&#xff1a;Symfony由SensioLabs&#xff08;现为Symfony公司&#xff09;开发&#xff0c;最初由Fabien Potencier于2005年创建。功能定位&#xff1a;Symfony通过提供一套可重用的组件和标准化的框架&#xff0c;帮助开发者快速构建Web应用、API、…

如何将WordPress文章中的外链图片批量导入到本地

在使用采集软件进行内容创作时&#xff0c;很多文章中的图片都是远程链接&#xff0c;这不仅会导致前端加载速度慢&#xff0c;还会在微信小程序和抖音小程序中添加各种域名&#xff0c;造成管理上的麻烦。特别是遇到没有备案的外链&#xff0c;更是让人头疼。因此&#xff0c;…

Monte Carlo Tree Search Boosts Reasoning via Iterative Preference Learning

Monte Carlo Tree Search Boosts Reasoning via Iterative Preference Learning Github&#xff1a;https://github.com/YuxiXie/MCTS-DPO 一、动机 大语言模型在偏好对齐环节可以提高模型的性能。目前有诸多工作尝试将偏好对齐通过迭代的形式进行改进: It involves a cycle …

CentOS下通过yum搭建完整lnmp环境(多版本PHP共存)

lnmp即 Linux Nginx Mysql PHP&#xff0c;在同一台服务器&#xff0c;可以支持多版本PHP共存使用&#xff0c;本文以 CentOS 7.x 为例介绍如何通过 yum 的方式搭建多版本 PHP 的 lnmp 环境。 前置条件 假设服务器已经通过 yum 方式搭建 lnmp 环境&#xff08;单版本PHP&a…

Linux下50个基本命令的使用说明【按首字母排序】

1. alias 用于为命令创建别名&#xff0c;以简化命令的输入。 alias llls -l # 现在输入ll将等同于ls -l2. apt-get 用于Debian及其衍生发行版的包管理工具。 sudo apt-get update # 更新包列表 sudo apt-get install package_name # 安装软件包3. cat 用于连接和显示文件内…

Scrapy框架在处理大规模数据抓取时有哪些优化技巧?

在使用Scrapy框架处理大规模数据抓取时&#xff0c;优化技巧至关重要&#xff0c;可以显著提高爬虫的性能和效率。以下是一些实用的优化技巧&#xff1a; 1. 并发请求 增加并发请求的数量可以提高爬虫的响应速度和数据抓取效率。可以通过设置CONCURRENT_REQUESTS参数来调整。…

装修行业办公家具销售公司网站带模版 附带完整的源代码包以及搭建部署教程

系统概述 这款网站源码系统是针对装修行业办公家具销售公司的特点定制的&#xff0c;它融合了现代化的设计理念和先进的技术架构&#xff0c;旨在为用户提供极佳的浏览和购物体验。系统采用了响应式设计&#xff0c;能够自适应不同设备的屏幕尺寸&#xff0c;确保用户在手机、…

git 鉴权失败

这条错误信息通常出现在使用Git进行远程操作时&#xff0c;比如克隆仓库、拉取更新或推送代码。错误的含义是&#xff1a; HTTP Basic: Access denied&#xff1a;访问被拒绝。The provided password or token is incorrect&#xff1a;提供的密码或令牌不正确。Your account …

邦芒秘诀:学会这3招在职场中让自己变得强大

职场上我们总希望自己掌握主动&#xff0c;能够有一定的能力“控场”&#xff0c;但往往事实上并不如此&#xff0c;甚至是不受领导们待见。 ​想要让自己变得强大&#xff0c;要注意做到这三点。 ​1、多展示自己&#xff0c;雁过留痕。 有些人就是实干派&#xff0c;努力做出…

【ai】 2005年 rule based expert system学习笔记1

PPT 是2005年的? Negnevitsky, Pearson Education 使用两种推理引擎的选择 backward chaining(逆向链接)推理过程 backward chaining(逆向链接)推理过程的GPT解释 这幅图展示了一个基于规则的专家系统如何通过backward chaining(逆向链接)推理过程来达到最终的推理目标…

C++ 设计模式--工厂模式

工厂模式&#xff1a;利用C多态的特性&#xff0c;对对象的创建进行封装。 定义一个创建对象的接口&#xff0c;让其子类自己决定实力化哪一个工厂类&#xff0c;工厂模式使其创建过程延迟到子类进行 参考链接 简单工厂 #include <iostream> #include <string> u…

Java并发编程(三)

Java并发编程 1、什么是 Executors 框架 Executors框架是一个根据一组执行策略调用&#xff0c;调度&#xff0c;执行和控制的异步任务的框架。 无限制的创建线程会引起应用程序内存溢出。所以创建一个线程池是个更好的的解决方案&#xff0c;因为可以限制线程的数量并且可以…

大数据-55 Kafka sh脚本使用 与 JavaAPI使用 topics.sh producer.sh consumer.sh kafka-clients

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

如何测量嵌入式软件程序(段)的执行时间?

测量嵌入式软件程序&#xff08;段&#xff09;的执行时间对于评估系统性能和优化代码至关重要。根据调研结果&#xff0c;汇总一些常用的方法如下&#xff1a; 1.插桩技术&#xff1a;这是一种纯软件的性能分析方法&#xff0c;通过在关键代码位置插入信息收集代码来实现。这…

禁毒教育展厅应如何创新展示方式,提升教育意义?

为了深刻揭示毒品的危害&#xff0c;促进禁毒知识的广泛传播&#xff0c;并显著提升公众的防范意识&#xff0c;禁毒教育展厅的推广举措正紧锣密鼓地展开。在这一关键进程中&#xff0c;展厅的空间布局与内容设计的合理性与针对性成为了至关重要的环节。接下来&#xff0c;我们…