React 组件状态(State)

React 组件状态(State)

组件可以拥有状态(state),它是组件数据的私有部分,可以用来管理动态数据。

状态仅适用于类组件,或者使用 React 的 Hook 时可以在函数组件中使用。

React 把组件看成是一个状态机(State Machines)。通过与用户的交互,实现不同状态,然后渲染 UI,让用户界面和数据保持一致。

React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM)。

以下实例创建一个名称扩展为 React.Component 的 ES6 类,在 render() 方法中使用 this.state 来修改当前的时间。

添加一个类构造函数来初始化状态 this.state,类组件应始终使用 props 调用基础构造函数。


类组件中的状态管理

创建一个有状态的类组件:

Counter.js 文件

import React, { Component } from 'react';

class Counter extends Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}

increment = () => {
this.setState({ count: this.state.count + 1 });
}

render() {
return (
<div>
<p>Count: {this.state.count}</p>
<button onClick={this.increment}>Increment</button>
</div>
);
}
}

export default Counter;

在 src/index.js 中渲染该组件:

实例

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import Counter from './Counter';

const root = ReactDOM.createRoot(document.getElementById("root"));
// 渲染 Counter 组件
root.render(<Counter />);

函数组件中的状态管理(使用 Hook)

使用 React Hook 可以在函数组件中使用状态。最常用的 Hook 是 useState。

创建一个有状态的函数组件:

Counter.js 文件

import React, { useState } from 'react';

function Counter() {
const [count, setCount] = useState(0);

return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}

export default Counter;

在 src/index.js 中渲染该组件:

实例

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import Counter from './Counter';

const root = ReactDOM.createRoot(document.getElementById("root"));
// 渲染 Counter 组件
root.render(<Counter />);


https://avg.163.com/topic/detail/9241300
https://avg.163.com/topic/detail/9241279
https://avg.163.com/topic/detail/9241299
https://avg.163.com/topic/detail/9241257
https://avg.163.com/topic/detail/9241281
https://avg.163.com/topic/detail/9241305
https://avg.163.com/topic/detail/9241263
https://avg.163.com/topic/detail/9241286
https://avg.163.com/topic/detail/9241290
https://avg.163.com/topic/detail/9241268
https://avg.163.com/topic/detail/9241295
https://avg.163.com/topic/detail/9241289
https://avg.163.com/topic/detail/9241307
https://avg.163.com/topic/detail/9241280
https://avg.163.com/topic/detail/9241302
https://avg.163.com/topic/detail/9241260
https://avg.163.com/topic/detail/9241285
https://avg.163.com/topic/detail/9241306
https://avg.163.com/topic/detail/9241270
https://avg.163.com/topic/detail/9241291
https://avg.163.com/topic/detail/9241262
https://avg.163.com/topic/detail/9241287
https://avg.163.com/topic/detail/9241273
https://avg.163.com/topic/detail/9241288
https://avg.163.com/topic/detail/9241274
https://avg.163.com/topic/detail/9241297
https://avg.163.com/topic/detail/9241265
https://avg.163.com/topic/detail/9241278
https://avg.163.com/topic/detail/9241298
https://avg.163.com/topic/detail/9241276
https://avg.163.com/topic/detail/9241294
https://avg.163.com/topic/detail/9241266
https://avg.163.com/topic/detail/9241292
https://avg.163.com/topic/detail/9241261
https://avg.163.com/topic/detail/9241284
https://avg.163.com/topic/detail/9241258
https://avg.163.com/topic/detail/9241283
https://avg.163.com/topic/detail/9241304
https://avg.163.com/topic/detail/9241267
https://avg.163.com/topic/detail/9241282
https://avg.163.com/topic/detail/9241108
https://avg.163.com/topic/detail/9241121
https://avg.163.com/topic/detail/9241112
https://avg.163.com/topic/detail/9241140
https://avg.163.com/topic/detail/9241122
https://avg.163.com/topic/detail/9241153
https://avg.163.com/topic/detail/9241138
https://avg.163.com/topic/detail/9241168
https://avg.163.com/topic/detail/9241147
https://avg.163.com/topic/detail/9241277
https://avg.163.com/topic/detail/9241155
https://avg.163.com/topic/detail/9241296
https://avg.163.com/topic/detail/9241170
https://avg.163.com/topic/detail/9241113
https://avg.163.com/topic/detail/9241176
https://avg.163.com/topic/detail/9241174
https://avg.163.com/topic/detail/9241182
https://avg.163.com/topic/detail/9241179
https://avg.163.com/topic/detail/9241264
https://avg.163.com/topic/detail/9241199
https://avg.163.com/topic/detail/9241185
https://avg.163.com/topic/detail/9241293
https://avg.163.com/topic/detail/9241124
https://avg.163.com/topic/detail/9241203
https://avg.163.com/topic/detail/9241196
https://avg.163.com/topic/detail/9241275
https://avg.163.com/topic/detail/9241211
https://avg.163.com/topic/detail/9241200
https://avg.163.com/topic/detail/9241301
https://avg.163.com/topic/detail/9241216
https://avg.163.com/topic/detail/9241131
https://avg.163.com/topic/detail/9241204
https://avg.163.com/topic/detail/9241109
https://avg.163.com/topic/detail/9241142
https://avg.163.com/topic/detail/9241213
https://avg.163.com/topic/detail/9241221
https://avg.163.com/topic/detail/9241123
https://avg.163.com/topic/detail/9241151
https://avg.163.com/topic/detail/9241218
https://avg.163.com/topic/detail/9241226
https://avg.163.com/topic/detail/9241132
https://avg.163.com/topic/detail/9241229
https://avg.163.com/topic/detail/9241141
https://avg.163.com/topic/detail/9241231
https://avg.163.com/topic/detail/9241150
https://avg.163.com/topic/detail/9241158
https://avg.163.com/topic/detail/9241160
https://avg.163.com/topic/detail/9241166
https://avg.163.com/topic/detail/9241167
https://avg.163.com/topic/detail/9241175
https://avg.163.com/topic/detail/9241114
https://avg.163.com/topic/detail/9241125
https://avg.163.com/topic/detail/9241133
https://avg.163.com/topic/detail/9241143
https://avg.163.com/topic/detail/9241152
https://avg.163.com/topic/detail/9241159
https://avg.163.com/topic/detail/9241169
https://avg.163.com/topic/detail/9241173
https://avg.163.com/topic/detail/9241177
https://avg.163.com/topic/detail/9241183
https://avg.163.com/topic/detail/9241195
https://avg.163.com/topic/detail/9241111
https://avg.163.com/topic/detail/9241120
https://avg.163.com/topic/detail/9241106
https://avg.163.com/topic/detail/9241139
https://avg.163.com/topic/detail/9241148
https://avg.163.com/topic/detail/9241156
https://avg.163.com/topic/detail/9241172
https://avg.163.com/topic/detail/9241105
https://avg.163.com/topic/detail/9241178
https://avg.163.com/topic/detail/9241118
https://avg.163.com/topic/detail/9241184
https://avg.163.com/topic/detail/9241137
https://avg.163.com/topic/detail/9241197
https://avg.163.com/topic/detail/9241107
https://avg.163.com/topic/detail/9241201
https://avg.163.com/topic/detail/9241110
https://avg.163.com/topic/detail/9241145
https://avg.163.com/topic/detail/9241117
https://avg.163.com/topic/detail/9241206
https://avg.163.com/topic/detail/9241119
https://avg.163.com/topic/detail/9241154
https://avg.163.com/topic/detail/9241126
https://avg.163.com/topic/detail/9241214
https://avg.163.com/topic/detail/9241136
https://avg.163.com/topic/detail/9241219
https://avg.163.com/topic/detail/9241149
https://avg.163.com/topic/detail/9241222
https://avg.163.com/topic/detail/9241157
https://avg.163.com/topic/detail/9241227
https://avg.163.com/topic/detail/9241230
https://avg.163.com/topic/detail/9241232
https://avg.163.com/topic/detail/9240046
https://avg.163.com/topic/detail/9240085
https://avg.163.com/topic/detail/9240116
https://avg.163.com/topic/detail/9240160
https://avg.163.com/topic/detail/9240195
https://avg.163.com/topic/detail/9240043
https://avg.163.com/topic/detail/9240086
https://avg.163.com/topic/detail/9240045
https://avg.163.com/topic/detail/9240118
https://avg.163.com/topic/detail/9240084
https://avg.163.com/topic/detail/9240146
https://avg.163.com/topic/detail/9240115
https://avg.163.com/topic/detail/9240174
https://avg.163.com/topic/detail/9240144
https://avg.163.com/topic/detail/9240044
https://avg.163.com/topic/detail/9240088
https://avg.163.com/topic/detail/9240124
https://avg.163.com/topic/detail/9240158
https://avg.163.com/topic/detail/9240193
https://avg.163.com/topic/detail/9234504
https://avg.163.com/topic/detail/9234511
https://avg.163.com/topic/detail/9234496
https://avg.163.com/topic/detail/9234503
https://avg.163.com/topic/detail/9234509
https://avg.163.com/topic/detail/9234493
https://avg.163.com/topic/detail/9234494
https://avg.163.com/topic/detail/9234499
https://avg.163.com/topic/detail/9234507
https://avg.163.com/topic/detail/9234491
https://avg.163.com/topic/detail/9234501
https://avg.163.com/topic/detail/9234508
https://avg.163.com/topic/detail/9234495
https://avg.163.com/topic/detail/9234506
https://avg.163.com/topic/detail/9234492
https://avg.163.com/topic/detail/9234486
https://avg.163.com/topic/detail/9234487
https://avg.163.com/topic/detail/9234488

实例

创建一个时间点实例来理解组件状态:

React 实例

class Clock extends React.Component { constructor(props) { super(props); this.state = {date: new Date()}; } render() { return ( <div> <h1>Hello, world!</h1> <h2>现在是 {this.state.date.toLocaleTimeString()}.</h2> </div> ); } } const root = ReactDOM.createRoot(document.getElementById("root")); root.render( <Clock /> );


尝试一下 »

接下来,我们将使Clock设置自己的计时器并每秒更新一次。

将生命周期方法添加到类中

在具有许多组件的应用程序中,在销毁时释放组件所占用的资源非常重要。

每当 Clock 组件第一次加载到 DOM 中的时候,我们都想生成定时器,这在 React 中被称为挂载

同样,每当 Clock 生成的这个 DOM 被移除的时候,我们也会想要清除定时器,这在 React 中被称为卸载

我们可以在组件类上声明特殊的方法,当组件挂载或卸载时,来运行一些代码:

React 实例

class Clock extends React.Component { constructor(props) { super(props); this.state = {date: new Date()}; } componentDidMount() { this.timerID = setInterval( () => this.tick(), 1000 ); } componentWillUnmount() { clearInterval(this.timerID); } tick() { this.setState({ date: new Date() }); } render() { return ( <div> <h1>Hello, world!</h1> <h2>现在是 {this.state.date.toLocaleTimeString()}.</h2> </div> ); } } const root = ReactDOM.createRoot(document.getElementById("root")); root.render( <Clock /> );

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1215611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始:Gitee 仓库创建与本地项目纳管全流程详解

目录 一、Gitee 仓库创建:打好代码托管的基础 1.1 准备工作 1.2 仓库创建步骤 二、本地生成 SSH 公钥:实现免密提交代码 2.1 SSH 公钥的作用原理 2.2 本地生成 SSH 公钥的步骤 步骤 1:检查 Git 环境 步骤 2:打开命令行工具 步骤 3:执行生成公钥的命令 2.3 将公钥…

法律服务效率提升的架构创新:AI应用架构师详解法律AI智能体微服务设计

法律服务效率提升的架构创新:AI应用架构师详解法律AI智能体微服务设计 一、引言:传统法律服务的效率困局与AI智能体的破局点 1.1 传统法律服务的三大效率痛点 在律师事务所、企业法务部或公共法律服务中心,你常能看到这样的场景: 重复劳动过载:一名律师每天要处理5-10份…

并行计算: CUDA 12.9 (支持 GPU 加速), OpenMP (多核 CPU)

这是一个非常核心且现代的高性能计算技术组合。我们来详细拆解这两项技术&#xff0c;以及它们如何协同工作。 核心思想&#xff1a;并行计算 在开始前&#xff0c;先理解目标&#xff1a;把一个大任务拆分成许多小任务&#xff0c;同时&#xff08;并行地&#xff09;处理它们…

Qt中connect()实现信号与槽连接这一核心机制

深入讲解Qt中connect()实现信号与槽连接这一核心机制。这是Qt框架最著名、最强大的特性之一&#xff0c;也是Qt区别于其他GUI框架的关键所在。一、核心概念&#xff1a;什么是信号与槽&#xff1f;1. 信号&#xff08;Signal&#xff09;定义&#xff1a;当对象的内部状态发生改…

HDF5与CGNS文件格式详解

我将为您全面解析这两种在科学计算和工程仿真领域至关重要的文件格式&#xff0c;以清晰易懂的方式解释它们的概念、关系和实际应用。 一、HDF5&#xff1a;科学计算的"瑞士军刀" 1. 基本概念 HDF5是Hierarchical Data Format version 5的缩写&#xff0c;即层次数…

资产管理系统如何让账实对齐变得简单又精准?

账实对齐是企业资产管理的核心诉求&#xff0c;也是多数企业面临的管理痛点——财务账上的资产数量、状态与实际实物脱节&#xff0c;要么出现“账上有、实物无”的流失隐患&#xff0c;要么因状态未同步导致折旧核算偏差&#xff0c;人工盘点耗时费力还易出错&#xff0c;不仅…

本周学习总结

1. 绝对路径与相对路径 绝对路径&#xff1a;从文件系统根目录开始的完整路径&#xff0c;具有唯一性&#xff0c;不受当前工作目录影响 Windows 系统以盘符开头&#xff08;如C:\file.txt&#xff09;Linux/macOS/Unix 系统以斜杠/开头&#xff08;如/home/user/file.txt&…

JDK动态代理和CGLIB代理的机制和选择

JDK动态代理和CGLIB代理的机制和选择 一、实现原理的本质区别 JDK动态代理是基于接口实现的。它利用Java反射机制,在运行时动态生成一个实现了目标接口的代理类。这个代理类实现了跟目标对象相同的接口,当调用接口方…

洛谷 P1332 血色先锋队 题解

题目链接 洛谷 P1332 血色先锋队 思路分析 一道广搜的题目。按照题意,首先将每个感染源作为起点,对全军跑一次广搜,对每个成员记录其感染的时间。然后只需依次输出每个领主的感染时间即可。 代码呈现 #include<b…

ClickHouse 25.12 版本发布说明

本文字数&#xff1a;20006&#xff1b;估计阅读时间&#xff1a;51分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 又一个月过去了&#xff0c;这也意味着新版本如期而至&#xff01; 发布概要 ClickHouse 25.12 版本带来了 26 项新特性 &#x1f3…

什么才是真正影响性能的关键:一年来基准测试的经验教训

本文字数&#xff1a;4369&#xff1b;估计阅读时间&#xff1a;11 分钟作者&#xff1a;Tom Schreiber为什么基准测试总是贯穿于我的工作年末将至&#xff0c;我习惯回顾一些最令我自豪的工作成果。2025年我创作并协助发布了大量与 ClickHouse 相关的内容&#xff0c;但其中最…

大数据领域HBase的RegionServer管理技巧

大数据领域HBase的RegionServer管理技巧&#xff1a;从新手到高手的进阶指南 关键词&#xff1a;HBase、RegionServer、Region管理、MemStore刷写、WAL日志、负载均衡、集群调优 摘要&#xff1a;在大数据存储领域&#xff0c;HBase作为Apache顶级项目&#xff0c;凭借其高并发…

ClickHouse 完成由 Dragoneer 领投的 4 亿美元 D 轮融资,加速其在分析与 AI 基础设施领域的扩张

本文字数&#xff1a;6065&#xff1b;估计阅读时间&#xff1a;13 分钟作者&#xff1a;ClickHouse Team本文在公众号【ClickHouseInc】首发公司收购 Langfuse&#xff0c;正式进军 LLM 可观测性 (LLM observability) 领域&#xff0c;并推出原生 Postgres 服务&#xff0c;以…

走向全栈:前后端状态认知差异与设计边界的深度探讨

文章目录 引言&#xff1a;为何关注前后端状态认知差异全栈开发的兴起与前后端分离的现状状态管理在现代应用中的重要性前后端协作中的常见误解 登录态的归属&#xff1a;前端状态还是后端状态&#xff1f;登录态的定义与实现方式前端如何管理登录态后端对登录态的支持与要求案…

Java毕设选题推荐:基于Java的小说三体科幻社区管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

本周 GitHub 热门:更好用的MCP客户端和Coding创作视频,开源项目层出不穷!

文章目录 大盘快读AI 助手的崛起iOfficeAI/AionUimicrosoft/agent-lightningVectifyAI/PageIndexeigent-ai/eigent 视频创作的新视角多样化的开发工具与框架obra/superpowerstobi/try 总结与展望参考来源 大盘快读 随着人工智能和视频技术的快速发展&#xff0c;开源社区再次迎…

计算机Java毕设实战-基于springboot的三体科幻社区交流分享管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

Java毕设项目:基于springboot的三体科幻社区管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

【课程设计/毕业设计】基于vue+springboot科幻社区管理系统springboot的三体科幻社区管理系统的设计与实现【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

生成器跟容器还是不一样的,生成器可能有“江郎才尽”的那一天 - GLORY-TO-THE

1.虽然我们平时从运行效果上来说,经常管“生成器”就理解成“容器”。 但是千万别忘了,生成器和列表等容器是不一样的,生成器是“惰性机制”。 要点1:我们在和生成器要值的时候,它是现做现卖的。当我们跟生成器取…