发布于 2026-01-06 0 阅读
0

React中的状态管理

React中的状态管理

各位开发者好!
在这篇文章中,我们将学习 React JS 中的状态管理。

什么是国家?

每个 React 组件都会返回 JSX,用于描述 UI 的外观。`state`state是 React 中的保留字。因此,状态是一个对象,它代表应用程序中可以更改的部分。

React v16.8Hooks 的引入,使得你可以在函数式组件中使用状态和其他 React 特性。

建立我们的项目

首先,我们使用create-react-app创建一个 React 应用。create-react-app 是官方推荐的 React 应用构建工具。你需要将它安装Node >= 8.10 and npm >=5.6到你的电脑上。要创建并运行项目,请输入以下命令:

npx create-react-app my-app
cd my-app
npm start

在本教程中,我们将构建一个简单的计数器应用程序,您可以在其中增加或减少计数。

现在让我们开始编写代码吧!


我们来创建计数器应用程序的基本结构
。src/App.js

import React, { Component } from "react";
import "./App.css";

class App extends Component {
    onIncrementHandler = () => {

    };

    onDecrementHandler = () => {

    };

    render() {
        return (
            <div className="App">
                <h3 className="counter">0</h3>
                <div className="container">
                    <button onClick={this.onIncrementHandler}>Increment</button>
                    <button onClick={this.onDecrementHandler}>Decrement</button>
                </div>
            </div>
        );
    }
}

export default App;



我们现在位于 App.css 文件中,让我们为计数器应用程序添加一些样式,使其看起来更美观:
src/App.css

.App {
    height: 100vh;
    overflow: hidden;
    text-align: center;
    display: flex;
    flex-direction: column;
}

.counter{
    font-size: 150px;
    font-weight: 400;
}
.container {
  display: flex;
  justify-content: center;
  align-items: center;
}

button {
  width: 15%;
  margin: 0 30px;
  font-size: 30px;
  color: white;
  background-color: black;
  border: none;
  transition: transform .2s;
  cursor: pointer;
}

button:hover {
  border: 1px solid black;
  color: black;
  background-color: white;
  transform: scale(1.2);
}

您应该已经注意到,我们将计数器的值硬编码为 0。那么,如何修改计数器的值呢🤔?

为了控制计数器的值,我们引入了状态(state)。状态是一个 JavaScript 对象,用于存储组件的属性值。当组件的状态发生变化时,组件的 UI 也会随之改变。

向类中添加本地状态

state = {
    counter: 0
}

要动态获取计数器,请替换<h3 className="counter">0</h3>

<h3 className="counter">{this.state.counter}</h3>

正确使用状态

setState()这是在初始状态设置之后更新状态的合法方法。

// Right
this.setState({comment: 'Hello World!'});

这里,我们传递了一个对象setState()。该对象包含我们要更新的状态部分,在本例中是 comment 的值。React 会获取这个值并将其合并到需要它的对象中。

不要直接修改状态。我们应该始终以不可变的方式更新状态。

// Wrong
this.state.comment = 'Hello World';

如果需要使用先前的状态进行更新,则上述方法将无法正常工作。因此,上述方法的替代方案是:

this.setState((prevState) => {
    counter: prevState.counter + 1
});

现在让我们更新我们的onIncrementHandler状态onDecrementHandler

onIncrementHandler = () => {
        this.setState((prevState) => ({
            counter: prevState.counter + 1,
        }));
};

onDecrementHandler = () => {
        this.setState((prevState) => ({
            counter: prevState.counter - 1,
        }));
};

最终更新后的状态管理代码如下所示:

import React, { Component } from "react";
import "./App.css";

class App extends Component {
    state = {
        counter: 0,
    };

    onIncrementHandler = () => {
        this.setState((state) => ({
            counter: state.counter + 1,
        }));
    };

    onDecrementHandler = () => {
        this.setState((prevState) => ({
            counter: prevState.counter - 1,
        }));
    };

    render() {
        return (
            <div className="App">
                <h3 className="counter">{this.state.counter}</h3>
                <div className="container">
                    <button onClick={this.onIncrementHandler}>Increment</button>
                    <button onClick={this.onDecrementHandler}>Decrement</button>
                </div>
            </div>
        );
    }
}

export default App;

文章来源:https://dev.to/saranshdawra/state-management-in-react-550f