React Hooks 学习笔记 | State Hook(一)

本文是React Hooks学习笔记的第一部分,主要聚焦在State Hook的使用。从类组件中的状态管理出发,详细解释如何过渡到使用useState进行状态管理,包括单一useState、多个useState的使用,并探讨了直接更新状态与使用函数更新状态的差异。此外,通过构建一个简单的购物清单应用,实战演示了useState在实际开发中的应用。
摘要由CSDN通过智能技术生成

大家好,小编最近在梳理 React Hook 的相关内容,由于看视频、看书、自己做项目总觉得缺点什么,总觉得看过了,内容太简单,有啥好写的?但是过了一段时间,感觉有些东西又模糊了。同时又觉得怕简单,写了也不一定有人看。但是想想,还是整理成文章分享出来,查漏补缺,用自己的思路和语言整理出来,方便日后的复习和查看,也希望能帮助到初学者入门。

一、开篇

React Hooks 无疑是目前 React  最令人兴奋着迷的特性之一,你可以使用更简单的函数编程的思维创建更加友好的组件。以往只有类组件才有状态管理和各种生命状态钩子函数,现在 React 16 及以后版本可以使用 useState Hooks 函数式的声明方式管理数据状态,简化生命周期相关的钩子函数等。

换句话说,我们构建React组件时不需要通过类的形式进行定义,Hooks 是一项革命性的功能,它将简化您的代码,使其易于阅读、维护、测试以及在你的项目中进行重用。现在你只需要花极短的时间进行熟悉它们,剩下的就是在实践中掌握它们。

二、环境准备

为了快速上手,小编还是建议使用官方的脚手架 Create React App ,安装命令如下:

npm i -g create-react-app

全局完成安装后,你就可以开始创建 React 应用了

npx create-react-app myapp

创建完成后,在项目目录下运行命令,启动你的 React 项目

cd myapp
npm start

三、类组件中的 State 状态管理

在学习 Hooks 中的状态管理之前,我们先复习下,在类组件中怎么进行状态管理的,有了对比,才能更好的理解  Hooks 的状态管理。示例代码如下:

import React from "react";
export default class ClassDemo extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      name: "Agata"
    };
    this.handleNameChange = this.handleNameChange.bind(this);
  }
  handleNameChange(e) {
    this.setState({
      name: e.target.value
    });
  }
  render() {
    return (
      <p>
        <form autoComplete="off">
          <p>
            <label htmlFor="name">Name</label>
            <input
              type="text"
              name="name"
              id="name"
              value={this.state.name}
              onChange={this.handleNameChange}
            />
          </p>
        </form>
        <p>Hello {this.state.name}</p>
      </p>
    );
  }
}

注:如果你是通过 Create React App 创建项目,只需要将 App.js 里的内容替换成上述内容即可。

运行你的应用程序,在浏览器里,你将会看到如下效果:


接下来,给自己一点时间,去理解上述的代码,我们在构造函数里,使用 this 的方式声明了 name 状态,并将一个 handleNameChange 函数绑定到组件实例中。在函数中,我们通过 this.setState 的方式改变状态的值。当用户在文本输入框输入值时,就会触发 handleNameChange 函数,更改 name 的状态值。

四、Hooks 中的状态管理 useState

现在,我们将使用 useState Hook 的方式改写类组件,它的语法如下所示:

const [state, setState] = useState(initialState);

useState 函数将返回一个包含两个元素的数组:

  • state: the name of your state—such as this.state.name or this.state.location(定义的数据状态)

  • setState: a function for setting a new value for your state. Similar to this.setState({name: newValue})(定义更改状态的函数或直接返回状态的值,组件状态值改变,就会触发re-render)

initialState 参数,则是初始化 state 状态的默认值(可以通过函数的形式返回值)。

基于以上基础知识后,我们来改下第三部分类组件的声明方式,示例代码如下:

import React, { useState } from "react";
export defa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值