web前端高级React - React从入门到进阶之state及组件的生命周期

系列文章目录

第一章:React从入门到进阶之初识React
第一章:React从入门到进阶之JSX简介
第三章:React从入门到进阶之元素渲染
第四章:React从入门到进阶之JSX虚拟DOM渲染为真实DOM的原理和步骤
第五章:React从入门到进阶之组件化开发及Props属性传值
第六章:React从入门到进阶之state及组件的生命周期
第七章:React从入门到进阶之React事件处理

一、State

本节中我们将介绍React组件中的一个新的概念:“State”。在前面元素渲染一章中我们用函数组件做了一个时钟的例子,由于函数式组件是一个静态组件,内容一旦渲染就不能再改了,要想改变函数组件里的内容除了我们后面要讲的使用React HOOKS以外,只能通过重新渲染组件的方式来达到更新内容的目的。先来回顾一下前面章节我们用函数组件做的时钟的小案例

function Clock(props) {
    
 return (
   <div>
     <h1>Hello, world!</h1>
     <h2>It is {
    props.date.toLocaleTimeString()}.</h2>
   </div>
 );
}

function tick() {
    
 ReactDOM.render(
   <Clock date={
    new Date()} />,
   document.getElementById('root')
 );
}

setInterval(tick, 1000);

如上代码,我们用函数封装了一个Clock时钟组件,然后利用定时器每隔1秒调用一次tick函数来重新渲染组件从而实现更新时钟的目的,那么这种方式显然不是最优的。React为我们提供了一个更好的办法来更新UI,那就是接下来要登场的“State”

  • 什么是State
  • State与props类似,但是State是React组件内部定义的一个私有属性,并且完全受控于当前组件
  • 在定义组件时,把需要用到的一些属性定义在State对象中,然后通过this.state.[属性名]来访问该属性
  • State 一般都只定义在类组件中,因为类组件都会继承自React.Component,而这个类中有个setState方法,我们可以通过调用setState方法来更新类组件中的state属性进而更新页面内容
  • 在组件中定义state属性时,只能命名为“state”,这样才能通过setState方法来更新state属性,因为在setState方法中默认会寻找名为state的属性并进行处理,所以如果命名为其它名称,是无法通过setState来更新属性值及DOM内容的

接下来我们把上面时钟案例中的函数组件改造为类组件

class Clock extends ReactComponent{
    
	constructor(){
    
		this
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值