react概念篇

news/2024/12/23 14:26:58/

jsx

定义

jsx 又称JavaScript xml(xml一般指的是可扩展编辑语言)
jsx是react提供的语法糖,能让我们在JS中写HTML

语法

只有一个根元素
使用js变量时,用插值表单式 {}
dom元素的class改为了className( className={‘div ’+active? ‘action’ : ’ '} )

类组件

组件比是大写字母开头
构建函数是可选的(constructor 可以必写)
this.state 是状态
有生命周期函数
有this,在使用函数时注意this指向问题

react指向问题

问题:JS原有this指向问题
解决:可用bind来改变this指向

函数组件

function 定义组件:
1.没有生命周期
2.没有this
3.没有状态(可以用hooks来解决)

jsx扩展

jsx是js语法扩展,可以使用我们类似于HTML的形式去使用JS

jsx最终需要转换成JS代码。
babel将es6转化为es5,让更多浏览器支持

react作用

react 监听用户数据的更新,帮助我们去渲染视图。
render()函数实现了dom渲染的过程,这个过程我们可以分为两个阶段:
1.获取虚拟dom(jsx经过babel转义后的对象)
2.将虚拟dom转化为真实dom并插入到HTML文档中

react生命周期

定义:react从挂载到卸载的过程,我们称这个过程为react生命周期

react的生命周期分为三个阶段: 挂载、更新、卸载

react 生命周期函数

定义: react在生命周期过程中,自动执行的一些函数,我们称这些函数为生命周期函数(钩子函数)

挂载阶段(当组件实例被创建并插入到dom中)

在react类组件中,挂载之前会调用他的构建函数constuctor()
(1)、所有的state都是来自于props
static.getDrivedStatFromProps
(2)、render
(3)、componentDidMount 会在组件挂载后(插入dom树中)立即调用,网络请求可以放在这个阶段

更新阶段

render()
更新阶段执行生命周期函数 componentDidUpdate

卸载阶段(组件从dom树被移除)

卸载阶段生命周期函数 componentWillUnMount

组件

因为react是单向数据流,值的传递是通过props传递(父组件传递数据给子组件,子组件通过父组件自定义的方法来修改父组件的状态)

组合组件(组件嵌套)

父子组件

父传子

函数组件: 通过props传递

例:

function FunctionComponent(props) {console.log('函数组件',props);return ( <div>函数组件</div>);
}import FunctionComponent from "./functionComponent";
function App() {const name = '李四'return ( <div><h1>函数组件</h1><FunctionComponent props={name}/></div>);
}export default App;

子传父

import { Component } from "react";
function FunctionComponent(props) {console.log('函数组件',props);return ( <button onClick={props.props.addClick}>加一</button>);
}class App extends Component {constructor(props) {super(props);}state = { number: 1}render() { return ( <div>组件: {this.state.number}<FunctionComponent props={{'number' : this.state.number,'addClick' : this.addClick.bind(this)}}/></div>);}addClick(){this.setState({number: this.state.number+1})}
}export default App;

兄弟组件

传参

因为单向数据流,组件之间的通信是通过props层层传递的,太麻烦了,所以出现了context对象(相当于全局变量)
例:

import { Component, createContext, useContext } from "react";
const ValueContext = createContext();
function Son(props) {const {state} = useContext(ValueContext)return (<div>子组件{state.name}</div>)
}function Father(props) {const {state} = useContext(ValueContext)return ( <div>父组件{state.name}<Son props={props.props}/></div>);
}class App extends Component {constructor(props) {super(props);}state = { name: '李三'}render() { return ( <div>组件通信<ValueContext.Provider value={{state:this.state}}><Father props={this.state.name}/></ValueContext.Provider></div>);}
}export default App;

http://www.ppmy.cn/news/1557486.html

相关文章

linux---使用定时任务同步时间

首先&#xff0c;确保你的系统上安装了ntpdate工具&#xff0c;它用于从NTP服务器获取并设置系统时间。如果你的系统上没有安装&#xff0c;你可以通过包管理器进行安装 安装ntpdate yum install -y ntpdate设置定时任务 crontab -e在文件中添加下面内容 #每5分钟同步一次时间 …

Python 爬取网页文字并保存为 txt 文件教程

引言 在网络数据获取的过程中&#xff0c;我们常常需要从网页中提取有用的文字信息。Python 提供了强大的库来帮助我们实现这一目标。本教程将以https://theory.gmw.cn/2023 - 08/31/content_36801268.htm为例&#xff0c;介绍如何使用requests库和BeautifulSoup库爬取网页文字…

MFC/C++学习系列之简单记录11——树控件的使用

MFC/C学习系列之简单记录11——树控件的使用 前言CTreectrl使用界面设置代码使用简单设计其他使用注意&#xff01; 总结 前言 在之前的界面设计中使用得很少&#xff0c;但是可以学习一下&#xff0c;以备不时之需&#xff01; CTreectrl使用 界面设置 在工具箱中选择Tree C…

如果模块请求http改为了https,测试方案应该如何制定,修改

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有疑问和建议&#xff0c;请私信或评论留言&#xff01; 前言 将模块的请求协…

使用 AI 辅助开发一个开源 IP 信息查询工具:一

本文将分享如何借助当下流行的 AI 工具,一步步完成一个开源项目的开发。 写在前面 在写代码时&#xff0c;总是会遇到一些有趣的机缘巧合。前几天&#xff0c;我在翻看自己之前的开源项目时&#xff0c;又看到了 DDNS 相关的讨论。虽然在 2021 年我写过两篇相对详细的教程&am…

深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

Sota Sota实际上就是State of the arts 的缩写&#xff0c;指的是在某一个领域做的Performance最好的model&#xff0c;一般就是指在一些benchmark的数据集上跑分非常高的那些模型。 **SOTA model&#xff1a;**并不是特指某个具体的模型&#xff0c;而是指在该项研究任务中&…

Spring Cloud Sleuth 分布式链路追踪

介绍分布式链路的思想 一、基本概念 1、Span&#xff1a;Span是链路追踪中的基本工作单元。当一个远程调度任务&#xff08;如RPC调用&#xff09;发生时&#xff0c;会产生一个Span。Span通过一个64位ID进行唯一标识&#xff0c;并且包含其他数据信息&#xff0c;如摘要、时间…

静态变量(static)

静态变量(static) 静态全局变量静态局部变量静态成员变量C++ 中,static 关键字可用于不同类型的变量:静态全局变量、静态局部变量和静态成员变量多线程下,静态全局变量、静态局部变量和静态成员变量无论初始化是否安全,访问和修改变量时都需要使用互斥锁或其他同步机制保…