React学习笔记二
创始人
2024-03-04 00:18:00
0

目录

React组件

一、两种创建方式

函数组件

类组件

二、将组件放在独立的js文件中

三、组件的样式

四、ref 获取 dom

五、列表渲染(一中有记,这里就省略) 

六、条件渲染

七、事件处理

八、状态 state 

组件中的数据

九、属性props(只读)

state是内部属性,props是为了更好地实现复用性,从外部接收数据。

十、生命周期(钩子函数)

初始化阶段

1、componentWillMount

2、render

3、componentDidMount

运行中阶段

1、componentWillReceiveProps(nextProps)

2、shouldComponentUpdate(nextProps,nextState)

3、componentWillUpdate

4、render 同初始化中的render

5、componentDidUpdate(preProps,preState,value)

销毁阶段

1、componentWillUnmount


React组件

组件介绍:组件化概念、代表页面中的某部分及功能、独立可复用

一、两种创建方式

函数组件

1、使用JS函数创建的组件

2、函数名必须大写开头

3、组件必须有返回值

例如:

function Hello() {return (
333333
)} ReactDOM.render(,document.getElementById("root"))

类组件

1、类名大写开头

2、类组件应继承 React.Component 父类

3、类组件必须提供 render() 方法

4、render() 必须有返回值

例如:

class Ok extends React.Component {render() {return (
ok
)}} ReactDOM.render(, document.getElementById("root"))

二、将组件放在独立的js文件中

步骤:

1、创建组件js文件,eg: Book.js;

2、在Book.js文件中导入React;

3、实用类或者函数创建组件;

4、组件必须要导出才能使用;

5、在指定的文件中导入Book.js;

6、渲染组件。

例如:

Book.js

  // Book.jsimport React from 'react'class Book extends React.Component {render() {return(

读书明智

)}}// 导出export default Book

index.js

import Book from './Book'
ReactDOM.render(,document.getElementById("root"))

三、组件的样式

1、行内样式

2、外部导入

(1)准备好外部 CSS 文件,在 js 中使用import引入

注意:class属性建议写为className

四、ref 获取 dom

你好

可以通过 this.refs.myword 获取p标签

注:refs 将要被弃用,在严格模式下会报错

新写法:

myRef = React.createRef();

如果 ref 绑定到组件上,我们会获得这个组件。

五、列表渲染(一中有记,这里就省略) 

六、条件渲染

1、{ 条件 ?

yes

:

no

}

2、{ 条件 &&

ok

}

七、事件处理

1、事件绑定

on+事件名称={fn}   注:这里要用驼峰命名法

例如:

  

八、状态 state 

设置 state 的组件称之为有状态组件,没有设置 state 的组件称之为无状态组件。

组件中的数据

例如:

1、

 class A extends Component {state = {key:value}}

2、

 class A extends Component {constructor() {super();this.state = {key: value}}}

注意:

(1)在类中定义 state (只能写这个名字)  对象--------state = {key:value};

(2)不要直接修改 state : this.state.ok='ok' -------- 使用setState({key:value})

(3)setState注意:

在同步逻辑中,异步更新状态与真实dom;

在异步逻辑中,同步更新状态与真实dom;

接受第二个参数,是个回调函数,在这里状态与dom更新完毕。

九、属性props(只读)

state是内部属性,props是为了更好地实现复用性,从外部接收数据。

1、某组件:

{/*属性*/}

2、MyNav.js:

render() {let {title,leftBtn} = this.props;return (
{leftBtn && }

{title}

)}

 属性验证:

import myprop from 'prop-types'static propTypes = {title:myprop.string,leftBtn:myprop.bool}

默认属性:
 

static defaultProps = {title:'标题'
}

 属性与状态总结:

(1)属性是父组件对子组件的数据传输与操作;

(2)状态是组件自己内部的数据。

十、生命周期(钩子函数)

只有类组件(函数组件需要hooks支持)

初始化阶段

1、componentWillMount

组件即将挂载,render 之前最后一次修改 state 的机会;

常用于:state的初始化;

备注:如果有警告,可使用 UNSAFE_componentWillMount ;

2、render

只能访问 props 于 state ,不能修改 state 及进行 dom 输出;

3、componentDidMount

成功执行完毕 render 并完成 dom 节点的渲染,可以对dom 进行修改;

常用于:axios请求,订阅函数调用,计时器,dom操作;

运行中阶段

1、componentWillReceiveProps(nextProps)

父组件修改属性触发;

最先获取父组件传来的属性,可以在这里进行 axios 请求或者其他逻辑处理;

备注:如果有警告,可使用 UNSAFE_componentWillReceiveProps ;

2、shouldComponentUpdate(nextProps,nextState)

返回false,会阻止render的调用;

参数是被修改之后新的属性及状态;

3、componentWillUpdate

组件将要更新,不能修改属性及状态;

备注:如果有警告,可使用 UNSAFE_componentUpdate ;

4、render 同初始化中的render

5、componentDidUpdate(preProps,preState,value)

可以修改 dom;

参数是被修改之前的属性及状态;

销毁阶段

1、componentWillUnmount

再删除组件前进行清理工作。

 

相关内容

热门资讯

阳光照明2024年营收31.7... 4月21日,阳光照明发布2024年年报。报告显示,公司2024年营业收入为31.76亿元,同比增长3...
进击2025:别再一门心思向前... 来源:浪_潮新消费过去一年的消费市场,资本退潮、流量见顶、市场愈发“挑剔”,寒流平等地吹向每一个人。...
期货日报|“期权+”理念赋能 ... “豫见期权·衍生未来”——期权分析师培训班(第1期)在郑州举办期货日报 记者 韩乐“期权市场的蓬勃发...
疫苗销售收入减少,康华生物一季... 转自:贝壳财经成都康华生物制品股份有限公司(以下简称“康华生物”)近日交出2024年和今年一季度的成...
创源股份2024年营收19.3... 4月21日,创源股份发布2024年年报。报告显示,公司2024年营业收入为19.39亿元,同比增长4...
安通控股:第一季度净利润同比增... 转自:财联社【安通控股:第一季度净利润同比增长372%】财联社4月21日电,安通控股(600179....
哈佛、耶鲁抛售“私募资产”?美... 最近,美国常青藤名校耶鲁大学的一项举动引发了市场的广泛关注。据报道,在总统特朗普的持续施压下,耶鲁正...
天准科技一季度营收2.19亿元... 4月21日,天准科技发布2025年一季报。报告显示,公司一季度营业收入为2.19亿元,同比增长13....
深天马A(000050.SZ)... 深天马A(000050.SZ)发布2025年一季度报告,第一季度,公司实现营业收入83.12亿元,同...
全球首款!宁德时代重大发布! 一天之内,宁德时代发布了多个“全球首款”。4月21日下午,宁德时代在主题为“边界觉醒”的超级科技日上...
兴齐眼药2024年净利润同比增... 兴齐眼药(300573)4月21日晚披露2024年年度报告,报告期内,公司实现营业收入19.43亿元...
昀冢科技控股子公司拟增资扩股不... 4月21日,昀冢科技(688260)发布公告,控股子公司池州昀冢电子科技有限公司拟增资扩股并引入地方...
益禾堂活动玩出新花样,竟敢把老... 转自:衡水日报四月春风和煦,正是放风筝的好时节。潍坊作为世界风筝的发源地,今年开启了“第42届潍坊国...
北京再推六项审评创新举措,促医... 转自:北京日报客户端记者从市药监局了解到,北京今年推出创新服务站与产业园区联动、精准前置服务、“AI...
赵聪,已任新职 文化和旅游部网站最新信息显示,赵聪已任艺术司司长。▲赵聪(资料图 来源:中央民族乐团)公开信息显示,...
云中马:2024年度净利润约1... 云中马(SH 603130,收盘价:22.75元)4月21日晚间发布年度业绩报告称,2024年营业收...
降雨结束,沙尘又来! 转自:西安发布今天我市小到中雨转多云降雨将于今晚结束明日我市再遇浮尘天气4月21日16时西安市气温实...
第八届浙江国际青年电影周定档今... 来源:每日商报第八届浙江国际青年电影周定于2025年9月20日至26日在杭州举行。本届青年电影周由中...
梅花生物十大流通股东格局生变:... 4月21日消息,梅花生物公告显示,截止2025年3月31日,相较于上一报告期,十大流通股东发生了以下...
第三届中国(安徽)科交会将启 ... 中新网合肥4月21日电 (记者 赵强)记者21日从安徽省政府新闻办召开的新闻发布会上获悉,第三届中国...