使用react-hooks及在项目中使用react-hooks遇到的一些问题的解决

本文详细介绍了React Hooks中的useState、useEffect和常用Hooks的使用,包括它们在函数组件中的作用,如何简化类组件的代码,以及在处理异步操作和性能优化方面的应用。通过实例展示了Hooks如何简化状态管理和副作用处理,帮助开发者更好地理解和运用React Hooks。
摘要由CSDN通过智能技术生成

什么是Hook?
Hook是React16.8的新增特性。它可以让我们在不编写class的情况下使用state以及其他react的特性。
Hook 是一些可以让我们在函数组件里“钩入” React state 及生命周期等特性的函数。他可以让我们不使用 class 也能使用 React。

先看一下类组件和函数式组件在实现同一个功能时,两者的区别。

class组件

import React, { Component } from “react”;

export default class Button extends Component {
constructor() {
super();
this.state = { buttonText: “Click me, please” };
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState(() => {
return { buttonText: “Thanks, been clicked!” };
});
}
render() {
const { buttonText } = this.state;
return {buttonText};
}
}
hooks函数式组件

import React, { useState } from “react”; // 引入useState

export default function Button() {
const [buttonText, setButtonText] = useState(“Click me, please”); // 调用 useState 声明了一个新的 state 变量。它返回一对值给到我们命名的变量上。
// const [loading, setLoading] = useState(false) 如果需要多个变量,可以通过调用多次useState来声明
function handleClick() {
return setButtonText(“Thanks, been clicked!”); // 用户点击按钮后,我们传递一个新的值给 setCount。React 会重新渲染 Button 组件,并把最新的 值 传给它。
}

return {buttonText};
}
对比两种组件,以看出class组件的代码相对于函数式组件显得很笨重,层级很多,如果再加入redux的话就会变得更加复杂。

hooks常用的钩子:
1.状态钩子 useState
2.副作用钩子 useEffect
3. 共享状态钩子 useContext (我没用过。。。)
4. useCallback和useMemo
5.useRef

useState:
用于为函数组件引入状态(state)。纯函数不能有状态,所以把状态放在钩子里面。

(1)useState()这个函数接受状态的初始值,作为参数,上例的初始值为按钮的文字。该函数返回一个数组,数组的第一个成员是一个变量(上例是buttonText),指向状态的当前值。第二个成员是一个函数,用来更新状态,约定是set前缀加上状态的变量名(上例是setButtonText)。

(2)如果需要多个变量,可以通过调用多次useState来声明。

(3)需要注意,useState是异步的 ,如果需要处理异步,可以使用useEffect来监听state是否发生变化,从而进行操作。(具体事例见后useEffect)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值