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

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实战项目干货

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI绘画3分钟解决英文恐惧症,comfyui汉化插件
  • 安装python插件命令集合
  • 分布式文件存储行业解决方案和技术选型分析
  • 【MySQL进阶之路 | 高级篇】显式事务和隐式事务
  • electron 网页TodoList应用打包win桌面软件数据持久化
  • 00-从零开始安装Oracle19c之数据库安装规划
  • 这款ERP云进销存系统,直接封神
  • 【排序】快速排序详解
  • 《学会 SpringMVC 系列 · 基础篇》
  • 华为OD机试 - Wonderland游乐园 - 动态规划(Java 2024 D卷 200分)
  • 遥感领域新方向!Mamba+RS论文汇总!
  • Undertow详解
  • Spring Boot:SpringBoot入门
  • DHCP与DNS的配置
  • 【屏显MCU】多媒体接口总结
  • 【Leetcode】101. 对称二叉树
  • [数据结构]链表的实现在PHP中
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 〔开发系列〕一次关于小程序开发的深度总结
  • codis proxy处理流程
  • CSS居中完全指南——构建CSS居中决策树
  • ECMAScript入门(七)--Module语法
  • HTTP 简介
  • Invalidate和postInvalidate的区别
  • Javascript基础之Array数组API
  • Java多态
  • Java深入 - 深入理解Java集合
  • Mocha测试初探
  • React的组件模式
  • VuePress 静态网站生成
  • 爱情 北京女病人
  • 创建一种深思熟虑的文化
  • 全栈开发——Linux
  • 项目管理碎碎念系列之一:干系人管理
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #pragma data_seg 共享数据区(转)
  • #数学建模# 线性规划问题的Matlab求解
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (SpringBoot)第七章:SpringBoot日志文件
  • (二) 初入MySQL 【数据库管理】
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Framework .NET Core与 .NET 的区别
  • .net refrector
  • .NET_WebForm_layui控件使用及与webform联合使用
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @JsonSerialize注解的使用
  • @requestBody写与不写的情况
  • [ C++ ] STL---string类的模拟实现