首页 > 其他分享 >react常用 Hooks

react常用 Hooks

时间:2024-08-30 17:54:42浏览次数:6  
标签:count React 常用 const Hooks react useState return data

React Hooks 是 React 16.8 引入的一项功能,它允许你在函数组件中使用状态和其他 React 特性,而不需要编写类组件。Hooks 使函数组件可以管理本地状态、处理副作用、使用上下文等,使得函数组件更加强大和灵活。以下是常用的 React Hooks 及其使用方法:

useState

import React, { useState } from 'react';

const Counter = () => {
  // 声明一个状态变量 `count` 和更新它的函数 `setCount`
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>Click me</button>
    </div>
  );
};

参数:

• useState(initialState): initialState 是状态的初始值。

返回值:

• [state, setState]: 返回当前状态和更新状态的函数。

 useEffect

useEffect 允许你在函数组件中执行副作用,比如数据获取、订阅或手动操作 DOM。

import React, { useEffect, useState } from 'react';

const Example = () => {
  const [data, setData] = useState(null);

  useEffect(() => {
    // 进行副作用操作,例如数据获取
    fetch('https://api.example.com/data')
      .then(response => response.json())
      .then(data => setData(data));

    // 可选的清理函数
    return () => {
      // 执行清理操作
    };
  }, []); // 空数组表示仅在组件挂载时执行

  return (
    <div>
      {data ? <p>{data.message}</p> : <p>Loading...</p>}
    </div>
  );
};

参数:

• useEffect(callback, dependencies): callback 是副作用函数,dependencies 是依赖数组,指定了 effect 何时需要重新执行。

返回值:

• undefined 或一个清理函数(如果需要清理副作用)。

useContext

useContext 允许你在组件中访问上下文。

import React, { createContext, useContext } from 'react';

// 创建上下文
const MyContext = createContext('default value');

const ChildComponent = () => {
  const value = useContext(MyContext);
  return <p>Value from context: {value}</p>;
};

const ParentComponent = () => {
  return (
    <MyContext.Provider value="Hello Context">
      <ChildComponent />
    </MyContext.Provider>
  );
};

参数:

• useContext(Context): Context 是你创建的上下文对象。

返回值:

• 上下文的当前值。

useReducer

useReducer 是 useState 的替代方案,适用于管理复杂状态逻辑。

import React, { useReducer } from 'react';

// 定义 reducer 函数
const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      throw new Error();
  }
};

const Counter = () => {
  const [state, dispatch] = useReducer(reducer, { count: 0 });

  return (
    <div>
      <p>Count: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
    </div>
  );
};

参数:

• useReducer(reducer, initialState): reducer 是处理状态更新的函数,initialState 是初始状态。

返回值:

• [state, dispatch]: 返回当前状态和 dispatch 函数,用于发送动作。

useMemo

useMemo 用于优化性能,通过缓存计算结果来避免不必要的计算。

import React, { useMemo, useState } from 'react';

const ExpensiveComponent = ({ value }) => {
  // 使用 useMemo 缓存计算结果
  const computedValue = useMemo(() => {
    // 假设这是一个昂贵的计算
    return value * 2;
  }, [value]); // 依赖项数组

  return <p>Computed Value: {computedValue}</p>;
};

const ParentComponent = () => {
  const [value, setValue] = useState(1);

  return (
    <div>
      <ExpensiveComponent value={value} />
      <button onClick={() => setValue(value + 1)}>Change Value</button>
    </div>
  );
};

参数:

• useMemo(() => computeValue, [dependencies]): computeValue 是计算结果的函数,dependencies 是依赖数组。

返回值:

• 缓存的计算结果。

 useCallback

useCallback 用于缓存回调函数,避免每次渲染时创建新的函数实例。

import React, { useCallback, useState } from 'react';

const Button = ({ onClick }) => {
  return <button onClick={onClick}>Click Me</button>;
};

const ParentComponent = () => {
  const [count, setCount] = useState(0);

  const handleClick = useCallback(() => {
    setCount(count + 1);
  }, [count]); // 依赖项数组

  return (
    <div>
      <Button onClick={handleClick} />
      <p>Count: {count}</p>
    </div>
  );
};

参数:

• useCallback(callback, [dependencies]): callback 是需要缓存的回调函数,dependencies 是依赖数组。

返回值:

• 缓存的回调函数。

自定义 Hooks

除了内置 Hooks,你还可以创建自定义 Hooks 来重用状态逻辑。

import { useState, useEffect } from 'react';

const useFetch = (url) => {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    fetch(url)
      .then(response => response.json())
      .then(data => {
        setData(data);
        setLoading(false);
      })
      .catch(error => {
        setError(error);
        setLoading(false);
      });
  }, [url]);

  return { data, loading, error };
};

使用自定义 Hook:

const App = () => {
  const { data, loading, error } = useFetch('https://api.example.com/data');

  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return <div>Data: {JSON.stringify(data)}</div>;
};

总结

React Hooks 使得函数组件能够实现与类组件相同的功能,提供了更简单的 API 和更强大的功能。通过 useState、useEffect、useContext、useReducer、useMemo 和 useCallback 等 Hooks,你可以在函数组件中管理状态、处理副作用、使用上下文等,构建更复杂和高效的 React 应用。

标签:count,React,常用,const,Hooks,react,useState,return,data
From: https://blog.csdn.net/weixin_72288930/article/details/141724053

相关文章

  • 【React】React事件和HTML事件的区别
    React写法<buttononClick={handleClick}>测试</button>HTML写法<buttononclick="handleClick()">测试</button>区别ReactHTML原生事件绑定方式小驼峰命名法,事件处理函数通过JSX语法直接绑定全小写形式定义事件处理函数函数引用内联的字符串表达式事件对象基于Ev......
  • Linux操作文件和文件夹的常用基础命令
    文件和文件夹的查看ls:列出当前目录中的文件和文件夹。ls-l:以长格式列出文件信息,包括权限、所有者、大小、修改时间等。ls-a:显示隐藏文件(以.开头的文件)。ls-h:以人类可读的格式显示文件大小。文件和文件夹的创建touchfilename:创建一个新的空文件。mkdirdirname:......
  • 常用时间命令和同步时间服务
    1.时间命令在Linux系统中,有很多与时间相关的命令,这些命令可以帮助用户查看系统时间、设置系统时间、计划任务等。命令功能说明date显示或设置系统日期和时间hwclock显示或设置硬件时钟(BIOS时间)ntpdate同步本地系统时间与远程NTP服务器上的时间timedatectl查询或修改系统......
  • js逆向之常用算法
     [Python]encode&decodefromurllibimportparse#url进行编码与解码url='你好啊'url_encode=parse.quote(url)print('url编码后:',url_encode)url_decode=parse.unquote(url_encode)print('url解码后:',url_decode)url_encode......
  • Adb 常用命令汇总
    打印依赖树:chmod+xgradlew&&./gradlew-q:app:dependencies>depend.txt查看顶层Activity信息:adbshelldumpsysactivitytop打印Log日志并过滤:adblogcat|grepcom.tencent.mm设备内文件导入MAC电脑指定路径下:adbpull/sdcard/aaa//Users/admin/Desktop卸载安......
  • Ae常用工具和图层的概念
    目录常用工具 图层的概念图层类型常用工具 对工具栏长按鼠标左键可以看到一个下拉菜单。 选中矩形后可以进行填充或者描边。 摁住shift建立一个矩形。摁住空格可以移动画布。 选取工具可以移动图形。旁边还有放缩工具。 图层的概念比如我们建立一个新......
  • 前端数据可视化常用工具大盘点
    本文来盘点前端数据可视化的各种常用工具库!图表EChartsECharts是一个基于JavaScript的开源数据可视化库,它由百度开源,现在由Apache基金会维护。ECharts提供了丰富的图表类型、灵活的配置选项和强大的交互功能,使得开发者能够轻松构建出美观且功能强大的数据可视化应用。......
  • 常用函数
    一、常用日期函数1.unix_timestamp:返回当前或指定时间的时间戳selectunix_timestamp();selectunix_timestamp("2020-10-28",'yyyy-MM-dd');2.from_unixtime:将时间戳转为日期格式selectfrom_unixtime(1603843200);3.current_date:当前日期selectcurrent_date......
  • sdelete 是一个由微软提供的工具,用于安全地删除文件和擦除磁盘上的数据。它通常用于以
    sdelete是一个由微软提供的工具,用于安全地删除文件和擦除磁盘上的数据。它通常用于以下几个目的:安全删除文件:当你使用sdelete删除文件时,它不仅从文件系统中删除文件记录,还会覆盖文件的存储区域,以确保文件数据不能被恢复。这样可以防止敏感数据被恢复。清除未使用的磁盘空......
  • Makefile 基础与常用语法详解
    目录 一、引言二、Makefile基础概念1.目标、依赖和命令2.文件名和搜索路径3.执行顺序和依赖关系三、Makefile常用语法1.变量和宏定义2.自动变量3.模式规则 4.条件判断5.循环6.伪目标 四、Makefile实际应用示例五、总结 一、引言        在......