React学习笔记二
创始人
2024-04-15 00:55:27
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

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

 

相关内容

热门资讯

喜闻乐见,2026年“国补”政... 12月30日,国家发展改革委、财政部印发的《关于2026年实施大规模设备更新和消费品以旧换新政策的通...
女子与表姐夫婚外情获赠三百余万... 一桩发生在海南的民间借贷纠纷,将一段持续二十余年的婚外情推到台前。相关材料显示,男子林森(化名)在婚...
诉讼纠纷频发!中央商场子公司又... 继控股子公司新亚百货面临补缴税款及滞纳金7392万元后,百货零售巨头中央商场(600280.SH)另...
从明天起,楼市迎来两大利好政策... 作者:暴哥 来源:暴财经pro 同志们,2025年要过去了! 今年,各位在股市里应该收获不少,把过去...
国台办回应台湾网红“馆长”大陆... 12月31日,国台办举行例行新闻发布会,国台办发言人张晗就近期两岸热点问题回答记者提问。 有记者提问...
中钢天源:股东中钢热能院907... 雷达财经 文|冯秀语 编|李亦辉 12月30日,中钢天源(证券代码:002057)发布公告称,其控股...
宇树科技因侵权责任纠纷案件被起... 天眼查法律诉讼信息显示,近日,杭州宇树科技股份有限公司及邵某新增1条开庭公告,原告为孙某,涉及侵权责...
今日视点:“制度创新+科技突破... 2025年,A股市场交易活跃度持续提升。截至12月30日,全年累计成交金额达417.8万亿元,同比增...
专业文章丨第二顺位抵押权人实现... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
企业就网络谣言报案并追究法律责... 2025-12-31 09:41:29 作者:狼叫兽 声明指出,目前相关网络平台已对上述不实信息进...