当前位置: 首页 > news >正文

广州荔湾做网站爱站seo工具包

广州荔湾做网站,爱站seo工具包,南京汤山建设银行网站,wordpress支付宝微信支付什么是副作用操作? useEffect 用于编写由渲染本身引起的对接组件外部的操作(官方称呼为:副作用操作) 以下情况会触发页面渲染 初次加载页面(组的挂载)响应式变量发生变化,触发页面根据新值重新…

什么是副作用操作?

useEffect 用于编写由渲染本身引起的对接组件外部的操作(官方称呼为:副作用操作)

以下情况会触发页面渲染

  • 初次加载页面(组的挂载)
  • 响应式变量发生变化,触发页面根据新值重新渲染(组件更新)
  • 关闭页面(组件卸载)

以下情况需要添加副作用操作

  • 页面初步渲染完成后,向服务器获取数据完成页面的最终渲染
  • 响应式变量发生变化时,先根据新值执行必要的其他业务逻辑,再进行最终的页面更新渲染
  • 关闭页面时,关闭定时器

useEffect 语法

useEffect 是 hook 函数

  • 第一个参数(必要): 自定义的处理函数(官方称呼为:副作用函数)
  • 第二个参数(可选): 依赖项

在这里插入图片描述

无依赖项

执行副作用函数的时机

  • 组件初次渲染后(组件挂载完成),在开发环境,会执行两次,生产环境仅执行一次
  • 组件更新渲染前(任一响应式变量变化都会触发!)
import { useEffect } from "react";function Demo() {useEffect(() => {console.log("执行了副作用函数");});return (<><div>你好</div></>);
}export default Demo;

依赖项为空数组 []

类似 vue 的生命周期 mounted

执行副作用函数的时机

  • 组件初次渲染后(组件挂载完成),在开发环境,会执行两次,生产环境仅执行一次
import { useEffect } from "react";function Demo() {useEffect(() => {console.log("执行了副作用函数");}, []);return (<><div>你好</div></>);
}export default Demo;

使用场景
初次渲染页面时访问接口加载页面数据

import { useEffect, useState } from "react";
import axios from "axios";function Demo() {const [list, setList] = useState([]);useEffect(() => {async function getList() {const res = await axios.get("http://localhost:3000/dataList");setList(res.data);}getList();}, []);return (<>{list.map((item) => (<div key={item.id}>{item.title}</div>))}</>);
}export default Demo;

依赖项为响应式变量构成的数组

类似 vue 的立即执行侦听器 watch

执行副作用函数的时机

  • 组件初次渲染后(组件挂载完成),在开发环境,会执行两次,生产环境仅执行一次
  • 响应式变量发生变化触发页面进行更新渲染前
import { useEffect, useState } from "react";function Demo() {const [name, setName] = useState("朝阳");useEffect(() => {// 在挂载和 name 更新时,都会执行!console.log("当前name值为:", name);}, [name]);function changeName() {setName("晚霞");}return (<><button onClick={changeName}>改名字</button></>);
}export default Demo;

清除副作用

最经典的场景即在组件卸载时清除计时器,以免内存泄露

father.jsx

import { useState } from "react";
import Child from "./child.jsx";function Father() {const [ifChild, setIfChild] = useState(true);function removeChild() {setIfChild(false);}return (<><button onClick={removeChild}>移除子组件</button>{ifChild && <Child />}</>);
}export default Father;

child.jsx

import { useEffect } from "react";function Child() {useEffect(() => {// 添加定时器const timer = setInterval(() => {console.log("执行了定时器");}, 1000);return () => {// 清除定时器clearInterval(timer);};});return (<><div><h1>我是子组件</h1></div></>);
}export default Child;
http://www.tj-hxxt.cn/news/4616.html

相关文章:

  • 做代码的网站推广找客户平台
  • 美国做爰直播网站网站注册查询
  • c语言精品课程网站开发中国制造网
  • 织梦可以做哪些类型型网站seo对网店推广的作用有哪些
  • 如何建个人网站教程关键词资源
  • 给网站做镜像seo网站推广怎么做
  • 企业网站如何做自然搜索怎么进行推广
  • 德州建设街小学网站网络推广seo怎么弄
  • 网站建设应该有什么特点平台推广方式方法是什么
  • 做网站的图片搜索引擎营销的主要方式有
  • 网站导航营销的优势昆明长尾词seo怎么优化
  • 抚州做网站公司哪家好重庆百度搜索优化
  • 国外优秀设计网站大全网址搜索
  • 公司怎么申请免费做网站沈阳网站seo排名公司
  • 视频弹幕网站怎么做的电商网站建设公司
  • wordpress网站出现域名加两个双引号的图片死链接百度客服工作内容
  • 网站免费建站2如何建一个自己的网站
  • 做室内3d设计的网站seo排名软件哪个好用
  • 齐齐哈尔建设局网站首页今日新闻大事件
  • 如何做微信官方网站百度推广关键词怎么优化
  • 低价的网站建设网站排行榜前十名
  • 2017做网站挣钱吗广州各区正在进一步优化以下措施
  • 怎么建设自己导购网站线上推广员是做什么的
  • wordpress 插件 下载重庆 seo
  • 安庆网站建设服务网google play下载安卓
  • 辽宁平台网站建设公司近三天的国内外大事
  • 加强网站信息怎么做宁波seo优化费用
  • 肥料网站建设 中企动力指数基金有哪些
  • 帝国cms做中英文网站河北seo推广公司
  • 网站设计是用ps做图吗东莞百度搜索网站排名