首页 > 其他分享 >react的hooks作用讲解

react的hooks作用讲解

时间:2023-07-04 11:13:25浏览次数:40  
标签:count const hooks react state useState 讲解 组件 return

1.useState

用于声明一个state变量,例子如下

点击查看代码
import React, { useState } from 'react';

function Example() {
  // 声明一个叫 "count" 的 state 变量
  const [count, setCount] = useState(0);

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

2.useEffect

有类似于类组件中的生命周期之类函数的作用,用于处理组件中的副作用操作,比如数据获取、DOM操作等。不传参数时所有的更新都会触发,传递空数据为参数时仅在挂载和卸载的时候执行,传递一个值时仅在这个值更新时执行

点击查看代码
//1.不传值时
useEffect(()=>{
console.log(props.number)
setNumber(props.number)
}) //所有更新都执行

//2.传递空数组
useEffect(()=>{
console.log(props)
},[]) //仅在挂载和卸载的时候执行

//3.传递一个值
useEffect(()=>{
console.log(count)
},[count]) //count更新时执行

3.useContext

没有hooks之前,类组件通过props进行父子组件之间的数据传输,有了hooks之后函数组件通过useContext进行父子组件之间的数据传输

点击查看代码
import React, { useState, createContext, useContext } from "react";
const CountContext = createContext(0);

const Example = () => {
  const [count, setCount] = useState<number>(0);
  return (
    <div>
      <p>父组件点击数量:{count}</p>
      <button onClick={() => setCount(count + 1)}>{"点击+1"}</button>
      <CountContext.Provider value={count}>
        <Counter />
      </CountContext.Provider>
    </div>
  );
};

const Counter = () => {
  const count = useContext(CountContext);
  return <p>子组件获得的点击数量:{count}</p>;
};

export default Example;

4.useReducer

useReducer 是 useState 的升级版本,用来践行 Flux/Redux 的思想,可以使用useReducer来代替Redux

点击查看代码
import React, { useReducer } from 'react';

  const initialState = { count: 0 };

  function reducer(state, action) {
    switch (action.type) {
      case 'increment':
        return { count: state.count + 1 };
      case 'decrement':
        return { count: state.count - 1 };
      default:
        throw new Error();
    }
  }

  function Counter() {
    const [state, dispatch] = useReducer(reducer, initialState);
    return (
      <>
        Count: {state.count}
        <button onClick={() => dispatch({ type: 'increment' })}>+</button>
        <button onClick={() => dispatch({ type: 'decrement' })}>-</button>
      </>
    );
  }

标签:count,const,hooks,react,state,useState,讲解,组件,return
From: https://www.cnblogs.com/sisxxw/p/17525195.html

相关文章

  • 如何使用React和Framer Motion构建图像轮播
    您可能在许多现代应用程序中遇到过轮播。这些多功能网页元素以各种名称(例如滑块或旋转器)而闻名,它们以视觉上吸引人的滑动或旋转方式展示内容。轮播可以帮助您节省空间、增强用户界面并提供出色的用户体验。轮播已成为UI设计的主要内容,通常用于显示图像、推荐等。创建引人入胜......
  • React props 用法
    ComponentsletyousplittheUIintoindependent,reusablepieces,andthinkabouteachpieceinisolation.Thispageprovidesanintroductiontotheideaofcomponents.Youcanfinda detailedcomponentAPIreferencehere.Conceptually,componentsareli......
  • How to use handleChange() function in react component?
    An onChange eventistriggeredwhenvaluesareenteredintheinput.Thisfiresafunction handleChange(),thatisusedtosetanewstatefortheinput.1.HandlingSingleInputFirst,wehavetosetuptheinputfieldasacontrolledcomponentsothatw......
  • React hooks
    什么是ReactHook?hook(钩子)是一种特殊的函数,它允许你“钩入”各种React特性。假设一个函数返回一个有两个值的数组:第一个值: 一个带有状态state的变量。第二个值: 一个带有处理程序handle(改变当前状态的函数)的变量。就是这样,很简单。......
  • react之自定义hooks
    原文合集地址如下,有需要的朋友可以关注本文地址合集地址任何相对独立、复用性强的逻辑,都可以extract为自定义Hook,自定义Hook是一种复用React的状态逻辑的函数。自定义Hook的主要特点是:抽象组件间的状态逻辑,方便复用让功能组件更纯粹,更易于维护自定义Hook可......
  • react-native项目启动报错 Error: `fsevents` unavailable (this watcher can only be
    react-native项目启动报错——watchman安装问题(macpro) LookingforJSfilesin/Users/你的名称/Documents/project/文件夹名Loadingdependencygraph.../Users/你的名称/Documents/project/文件夹名/node_modules/metro/node_modules/sane/src/fsevents_watcher.js:37......
  • react项目webpack打包图片名去除hash
    环境:node-vv16.16.01、露出webpack配置文件:yarnruneject如果git报错,请执行gitadd.gitcommit-m'ddd'再执行yarnruneject2、执行完上一步后,项目会新增一个config文件夹 修改config\webpack.config.js 修改图片:搜索media,一般在218行出现:“assetModule......
  • React - 14 Hooks组件之useRef
    1.获取元素的3种方式方式1:ref={x=>refName=x}函数组件中没有this,直接给了一个变量。(可以用但是不推荐)方式2React.createRef()方式3useRef(null)2.函数组件用useRef,类组件用React.createRefimportReact,{useState,useEffect,useRef}from"react";import{Butto......
  • SAP 电商云 footer 区域 Link Component HTML 源代码的详细讲解
    如下图所示:这个linkComponent生成的a元素的HTML代码:<ahref="http://www.twitter.com/SAP_CX"target="_blank"rel="noopener">Twitter-j<!--bindings={"ng-reflect-ng-template-outlet":"[objectObject]"}......
  • React - 13 Hooks组件之useEffect
    1.useEffectimportReact,{useState,useEffect}from"react";import{Button}from'antd';import'./Demo.less';/*useEffect:在函数组件中,使用生命周期函数useEffect(callback):没设置依赖+第一次渲染完毕后,执行callback,等价于componentDidMount......