![React.js 16从入门到实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/135/29977135/b_29977135.jpg)
4.6 在时钟组件类中引入State状态
在这一节中,我们开始正式引入React状态(State)的概念。前面做了那么多的代码铺垫,就是为了在这里引入State状态的概念时能够水到渠成,因为React State是其他大部分JavaScript前端框架中所没有的概念。
为了便于读者学习,我们就以【代码4-11】为代码蓝本,通过代码改写的方式进行介绍。另外,改写的方式可以参考本章第1小节中介绍的内容。
首先,我们需要将“props”参数替换为“state”属性,具体代码形式如下:
【代码4-12】(详见源代码目录ch04-react-state-clock-state.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P84_12401.jpg?sign=1739015420-rJedjw8GHzZ2J1CCBnFjckAvsrsgilxl-0-c1f7758e908581d68ed0d67f9fcdae17)
关于【代码4-12】的说明:
●第06行代码中,使用“state”状态替换了原来的“props”参数。
接着,需要为时钟组件类(ClockReactComp)添加constructor()构造方法,并且对“state”状态进行初始化,具体代码形式如下:
【代码4-13】(详见源代码目录ch04-react-state-clock-state.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P85_12475.jpg?sign=1739015420-ulDslBStM9sDEg7B3E2EMesTWYu7GhZG-0-81d2e45220adf072214b4b76e9405f5e)
关于【代码4-13】的说明:
●第02~04行代码定义的就是时钟组件类(ClockReactComp)的constructor()构造方法。其中,第03行代码对“state”状态进行了初始化操作,定义了一个date时间属性。
然后,将“props”参数传递到父类的构造方法之中,具体的代码形式如下:
【代码4-14】(详见源代码目录ch04-react-state-clock-state.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P85_12555.jpg?sign=1739015420-4MaU0QOpew6TnSVmLEyZvhx4fgX9zFJa-0-6bc0e5fed4f5fb13a7fae0f0b613d1be)
关于【代码4-14】的说明:
●在第03行代码中,通过super关键字调用“props”参数,实现将“props”参数传递到父类构造方法的操作。
至此,在时钟组件类(ClockReactComp)中引入React State状态的操作就基本完成了,完整的代码形式如下:
【代码4-15】(详见源代码目录ch04-react-state-clock-state.html文件)
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P86_12650.jpg?sign=1739015420-sTLdO987IZvopBVhT20Tt9BVfe0NPCjy-0-e98ba86c1763575eb14f31470699f3cf)
关于【代码4-15】的说明:
●在第33行代码中,通过调用ReactDOM的render()方法,实现将时钟组件类(ClockReactComp())渲染到页面中进行显示的操作。另外请注意,我们在<ClockReactComp />元素中移除了date属性。
测试网页的效果如图4.4所示。通过在时钟组件类(ClockReactComp())中引入State状态,也可以实现同样的页面显示效果。正如图中标识所写内容那样,这个时钟组件类是无法自我更新的。难道还是要继续通过计时器功能,才可以实现自我更新的时钟组件类么?我们在下一小节中给出答案。
![](https://epubservercos.yuewen.com/27D3F5/16499866705998906/epubprivate/OEBPS/Images/Figure-P87_12898.jpg?sign=1739015420-T3KK8k4nIWB5iTejrWpBH9dU7RjGCFsL-0-6d6e2b08eeaa8e806242bb5a9d4e33ae)
图4.4 React State时钟组件类