React Hooks的理解

简介: React Hooks的理解

Hooks是什么?

  1. Hooks就是让函数组件具有State和其他React特性的能力

为什么使用hooks?

  1. React有类组件和函数组件两种写法,在没有hooks之前,需要State的组件只能通过类组件实现存在组件之间复用状态逻辑,复杂组件臃肿,难以理解等问题

基础Hooks(useState,useEffect,useRef)的使用

  1. useState--当需要给函数组件添加state时,使用useState
import React,{useState} from 'react'
export default function Person() { 
    // 声明一个state count 
    const [count, setCount] = useState(0); 
    // 使用count进行渲染,并绑定点击时间,使count+1 
    return ( 
      <div> 
        <p>count:{count}</p> 
        <button onClick={() => setCount(count + 1)}> 
            点我加一
        </button> 
      </div> 
    ); 
  }

上述案例中 const [count, setCount] = useState(0),count代表变量名称,setCount代表修改变量的方法,useState(0)代表count初始值设置为0,当调用setCount方法之后会主动调用render进而刷新页面


2.useEffect--为组件添加副作用的操作(因为函数式组件没有生命周期相关概念,我们使用useEffect来实现类似生命周期的操作)


a.useEffect第一个参数接受一个回调函数,默认情况下,useEffect会在第一次渲染和更新之后都会执行,相当于在componentDidMount和componentDidUpdate两个生命周期函数中执行回调

import React,{useState,useEffect} from 'react'
export default function Person() { 
    // 声明一个state count 
    const [count, setCount] = useState(0); 
    // 使用count进行渲染,并绑定点击时间,使count+1 
    useEffect(()=>{
        console.log(count);
    })
    return ( 
      <div> 
        <p>count:{count}</p> 
        <button onClick={() => setCount(count + 1)}> 
            点我加一
        </button> 
      </div> 
    ); 
  }

d3699f7fbbe48877e272d1d0356e74c5.png

b.如果某些特定值在两次重渲染之间没有发生变化,这时候只需要传入第二个参数,React 将对前一次渲染的count和后一次渲染的count进行比较,如果是相等则跳过useEffect执行

import React,{useState,useEffect} from 'react'
export default function Person() { 
    // 声明一个state count 
    const [count, setCount] = useState(0); 
    // 使用count进行渲染,并绑定点击时间,使count+1 
    useEffect(()=>{
        console.log(count);
    },count)
    return ( 
      <div> 
        <p>count:{count}</p> 
        <button onClick={() => setCount(count + 1)}> 
            点我加一
        </button> 
      </div> 
    ); 
  }

c.回调函数中可以返回一个清除函数,这是effect可选的清除机制,相当于类组件中componentwillUnmount生命周期函数,可做一些清除副作用的操作

const [isOnline, setIsOnline] = useState(null); 
useEffect(() => { 
  function handleStatusChange(status) { 
    setIsOnline(status.isOnline); 
  } 
  ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange); 
  // 返回一个函数,在UnMount时进行清除 
  return () => { 
    ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange); 
  }; 
}, []); 

d.总结:useEffect相当于componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个生命周期函数的组合

3.useRef--使用ref

import React, {  useRef } from 'react'
export default function Person() {
    const refOne = useRef()
    const getInput=()=>{
        console.log(refOne.current.value);
    }
    return (
        <div>
            <input type="text" ref={refOne} name="" id="" />
            <button onClick={() => getInput()}>
                点我获取输入框数据
            </button>
        </div>
    );
}

04c9b503bef47c5a4259bb3f215e42e4.png

目录
相关文章
|
1月前
|
前端开发 JavaScript 开发者
深入理解React Hooks:提升前端开发效率的关键
【10月更文挑战第5天】深入理解React Hooks:提升前端开发效率的关键
|
1月前
|
前端开发 JavaScript
React Hooks 全面解析
【10月更文挑战第11天】React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性,简化了状态管理和生命周期管理。本文从基础概念入手,详细介绍了 `useState` 和 `useEffect` 的用法,探讨了常见问题和易错点,并提供了代码示例。通过学习本文,你将更好地理解和使用 Hooks,提升开发效率。
68 4
|
1月前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
1月前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
9天前
|
前端开发 JavaScript
深入探索React Hooks:从useState到useEffect
深入探索React Hooks:从useState到useEffect
|
19天前
|
前端开发 JavaScript 开发者
“揭秘React Hooks的神秘面纱:如何掌握这些改变游戏规则的超能力以打造无敌前端应用”
【10月更文挑战第25天】React Hooks 自 2018 年推出以来,已成为 React 功能组件的重要组成部分。本文全面解析了 React Hooks 的核心概念,包括 `useState` 和 `useEffect` 的使用方法,并提供了最佳实践,如避免过度使用 Hooks、保持 Hooks 调用顺序一致、使用 `useReducer` 管理复杂状态逻辑、自定义 Hooks 封装复用逻辑等,帮助开发者更高效地使用 Hooks,构建健壮且易于维护的 React 应用。
28 2
|
23天前
|
前端开发 开发者
React 提供的其他重要 Hooks
【10月更文挑战第20天】React 提供了一系列强大的 Hooks,除了 `useRef` 之外,还有许多其他重要的 Hooks,它们共同构成了函数式组件开发的基础。
35 6
|
1月前
|
前端开发 JavaScript 开发者
React Hooks
10月更文挑战第13天
34 1
|
1月前
|
前端开发
|
1月前
|
前端开发 JavaScript API
利用React Hooks简化状态管理
【10月更文挑战第1天】利用React Hooks简化状态管理