IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React useState和useEffect -> 正文阅读

[JavaScript知识库]React useState和useEffect

使用 useState()

  1. useState 接收一个参数来作为它的state,也可以没有state。
  2. useState返回一个数组,其中包含当前state和更新state的函数,我们可以使用数组解构语法来命名useState的返回值。
import React, { useState } from 'react';

function Example() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

使用 useEffect()

官网参考 https://zh-hans.reactjs.org/docs/hooks-effect.html
**什么是副作用?**数据获取,设置订阅以及手动更改 React 组件中的 DOM 都属于副作用。不管你知不知道这些操作,或是“副作用”这个名字,应该都在组件中使用过它们。

**useEffect有什么作用?**useEffect 就是一个 Effect Hook,给函数组件增加了操作副作用的能力。它跟 class 组件中的 componentDidMountcomponentDidUpdatecomponentWillUnmount 具有相同的用途,只不过被合并成了一个 API。

**每次渲染useEffect会执行吗?**是的,默认情况下它会在组件每次更新渲染的时候都会执行,包括组件第一次创建的时候。

import React, { useState } from 'react';

function Example() {
    const [num,setNum] = useState(0);

    useEffect(() => {
        //每次num+1的时候,effect都会执行
        document.title = num
    })
    return (
        <div>
            <div>{num}</div>
            <button onClick={()=>setNum(num+1)}>加一</button>
        </div>
    );
}

我们还可以在effect中return一个函数用作清除副作用,其相当于class组件中的componentWillUnmount,执行于组件卸载之前。

下面是一个小例子来展示它的作用。

//parent.js
import React,{useState} from 'react'

import Child from './Child'
export default function (){
    const [show,setShow] = useState(true)

    return (
        <div>
            {show?<Child />:null}
            <button onClick={()=>setShow(!show)}>display it</button>
        </div>
    );
};
//child.js
import React,{useEffect,useState} from 'react'

export default function (){
    const [num,setNum] = useState(0);

    useEffect(() => {
        document.title = num
        //组件卸载时会执行
        return ()=> document.title = "卸载了"
    })
    
    return (
        <div>
            <div>{num}</div>
            <button onClick={()=>setNum(num+1)}>加一</button>
        </div>
    );
};

useEffect还接收一个数组用于判断是否跳过执行。
这是一个简单的例子,我们在数组中放入了一个参数来加以控制只有在show改变的时候才会执行effect。

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

export default function (){
    const [show,setShow] = useState(true)
    const [num,setNum] = useState(0)
    
    useEffect(()=>{
        console.log(num)
    },[show])
    return (
        <div>
            <button onClick={()=>setShow(!show)}>展示一次num</button>
            <button onClick={()=>setNum(num+1)}>num+1</button>
        </div>
    );
};

我们还可以放入多个参数,当其中一个改变时,也会执行effect。

useEffect(()=>{
    console.log(num)
},[show,num])

也可以只放一个空数组,effect只会在组件第一次渲染后执行一次。

useEffect(()=>{
    console.log(num)
},[])

原文

https://www.yehger.com/article/58.html

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:19:49  更:2022-11-05 00:20:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:58:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码