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

网站空间做邮箱网络营销方案设计毕业设计

网站空间做邮箱,网络营销方案设计毕业设计,乌鲁木齐注册公司代办公司,东莞大朗网站建设仗剑文章目录 两个基础知识1. react的更新问题, react更新会重新执行react函数组件方法本身,并且子组件也会一起更新2. useCallback和useMemo滥用useCallback和useMemo要解决什么3. react的state有个经典的闭包,导致拿不到最新数据的问题.常见于useEffect, useMemo, useCallback4. …

文章目录

  • 两个基础知识
    • 1. react的更新问题, react更新会重新执行react函数组件方法本身,并且子组件也会一起更新
    • 2. useCallback和useMemo滥用
    • useCallback和useMemo要解决什么
    • 3. react的state有个经典的闭包,导致拿不到最新数据的问题.
    • 常见于useEffect, useMemo, useCallback
    • 4. 副作用方案
    • 总结

两个基础知识

1. react的更新问题, react更新会重新执行react函数组件方法本身,并且子组件也会一起更新

在这里插入图片描述

2. useCallback和useMemo滥用

useCallback和useMemo要解决什么

React.memo包装组件
React.useCallback包裹传递子组件函数

对于传递给组件的对象是固定不变的,和数据没有关系的.
需要将固定变量放在函数外层

React.useMemo: 当你给子组件的对象是和组件数据有关的, 也就是做一个计算属性时候
, 采用useMemo

3. react的state有个经典的闭包,导致拿不到最新数据的问题.

常见于useEffect, useMemo, useCallback

在这里插入图片描述

在这里插入图片描述

4. 副作用方案

在这里插入图片描述

在这里插入图片描述

App.jsx

import React, { useState, useRef, useEffect } from 'react'
import Filter from './components/Filter';
import Pagers from './components/Pagers';import './App.css'// * 如果这个对象是固定不变的,和state数据无关系, 需要提到组件外侧
const obj = {a:'cccc'
}// useRef, 副作用方案
// 如果有一个state数据, 需要传递给子组件时候
// 建议把state数据定义为ref
function App() {const [count, setCount] = useState(0)const [filterData, setFilterData] = useState('')const [pageData, sePageData] = useState('')// useRef: // 当有一个变量, 当这个变量不想被外部获取, 不需要写依赖// 并且还想获取state最新值, 此时,需要将state变为ref// useRef定义的变量【不会造成视图更新】// const filterData = useRef('')// const setFilterData = React.useCallback((val)=>{//   filterData.current = val// }, [])// 准备一个请求接口的方法给筛选栏// 再次更新,就会重新执行, 等于又在内存中新建了一个getList方法// 第一次渲染->getList 创建 1001 第二次->1002//1.  * useCallback并不是有方法一定要包裹, 只有当这个方法给子组件的时候才有// const getList = React.useCallback((page)=>{//   console.log('=item=====');//   // console.log(item);//   // *2.  useCallback, useEffect, useMemo方法. 如果用到state数据//   // * 一定要把state数据写在第二个数组中, 否则拿不到新数据//   // 改为useRef方式,  搜索栏更新,不会造成page更新//   console.log(count, filterData, page);// }, [count, filterData])// 方法3: 使用useEffect监听子组件变化, 不将getList方法传递子组件useEffect(() => {console.log(count, filterData, pageData);}, [count, filterData, pageData])// * 3. React.useMemo: 当你给子组件的对象是和组件数据有关的, 也就是做一个计算属性时候return (<><h1>Vite + React</h1><div className="card">父组件本身:<button onClick={() => setCount((count) => count + 1)}>count is {count}</button></div><div>筛选栏:<Filter//  config={obj}filterData={filterData}setFilterData={setFilterData}//  getList={getList}/></div><div className="read-the-docs"><Pagers sePageData={sePageData}//  getList={getList}/></div></>)
}export default App

Pagers.jsx

import React from "react";function Pagers(props) {console.log("pager render");const { sePageData } = props;return (<div className="Pager">{[1, 2, 3, 4, 5].map((i) => {return (<divkey={i}onClick={() => {sePageData(i);}}>{i}</div>);})}</div>);
}export default React.memo(Pagers);

Filter.jsx

import React, { useState } from 'react'function Filter(props) {console.log('Filter render---');const { setFilterData } = propsconst value = React.useRef('')return (<><input onChange={(e)=>{value.current = e.target.value}} ></input><button  onClick={()=> setFilterData(value.current)}>搜索</button></>)
}export default React.memo(Filter)

总结

小结一下:
React 函数式组件会在state/props/context/父组件重新渲染时,重新执行函数,
为避免不必要的性能消耗(函数重新定义,某些值重新计算等等),减少重新渲染(或者重新执行函数式组件),需要控制props + 配合react.memo
控制props :

  1. 用useCallback暂存函数(注意用到state时要用好第二个参数)、useMemo避免复杂运算重复执行
  2. 用Ref(非受控组件)获取不需要渲染,但又是最新的值
  3. 不变的值写在函数式组外,避免重复创建
  4. jsx里尽量不写字面量、匿名函数

// useRef:
// 当有一个变量, 当这个变量不想被外部获取, 不需要写依赖
// 并且还想获取state最新值, 此时,需要将state变为ref
// ** useRef定义的变量【不会造成视图更新】**
// const filterData = useRef(‘’)
// const setFilterData = React.useCallback((val)=>{
// filterData.current = val
// }, [])

// 注意:useRef定义的变量【不会造成视图更新】,而state变量会视图更新, 也会被添加到依赖项, 会影响子组件更新

  1. 使用方案3, 使用useEffect监听子组件变化, 不将getList方法传递子组件
    ,只用将修改父组件数据的方法传递到子组件. 在父组件通过副作用更新

  2. 技巧4, 当数据只在子组件中使用时候, 而不会在页面展示时,
    需定义为useRef变量,(在页面展示时定义为state变量).

定义在组件内部, 在点击确定时候, 将数据更新到父组件, 修改时用.current修改

在这里插入图片描述


文章转载自:
http://inattentive.nrpp.cn
http://ungoverned.nrpp.cn
http://enterpriser.nrpp.cn
http://hereinafter.nrpp.cn
http://tractor.nrpp.cn
http://upbuild.nrpp.cn
http://handmaid.nrpp.cn
http://libya.nrpp.cn
http://fiddle.nrpp.cn
http://noseband.nrpp.cn
http://intreat.nrpp.cn
http://khaibar.nrpp.cn
http://curtal.nrpp.cn
http://riband.nrpp.cn
http://intertwine.nrpp.cn
http://fluidity.nrpp.cn
http://hexyl.nrpp.cn
http://socialize.nrpp.cn
http://ration.nrpp.cn
http://reputably.nrpp.cn
http://sinfully.nrpp.cn
http://candida.nrpp.cn
http://bulbospongiosus.nrpp.cn
http://zodiac.nrpp.cn
http://labouratory.nrpp.cn
http://bettor.nrpp.cn
http://hypochlorite.nrpp.cn
http://nidering.nrpp.cn
http://israel.nrpp.cn
http://barred.nrpp.cn
http://omnific.nrpp.cn
http://gronland.nrpp.cn
http://fidelity.nrpp.cn
http://neuss.nrpp.cn
http://gadbee.nrpp.cn
http://cataphatic.nrpp.cn
http://coinheritance.nrpp.cn
http://statistically.nrpp.cn
http://gigglish.nrpp.cn
http://mastix.nrpp.cn
http://kura.nrpp.cn
http://maintopsail.nrpp.cn
http://prussianism.nrpp.cn
http://lem.nrpp.cn
http://rutabaga.nrpp.cn
http://gunrunning.nrpp.cn
http://upsilon.nrpp.cn
http://off.nrpp.cn
http://rebukeful.nrpp.cn
http://preface.nrpp.cn
http://conciliative.nrpp.cn
http://octane.nrpp.cn
http://trypsinogen.nrpp.cn
http://moriori.nrpp.cn
http://mecopteran.nrpp.cn
http://multitask.nrpp.cn
http://regressive.nrpp.cn
http://exile.nrpp.cn
http://strangury.nrpp.cn
http://henbane.nrpp.cn
http://leucoderma.nrpp.cn
http://doorhead.nrpp.cn
http://eerie.nrpp.cn
http://frivolously.nrpp.cn
http://roestone.nrpp.cn
http://orchestic.nrpp.cn
http://sandunga.nrpp.cn
http://distressing.nrpp.cn
http://combustibility.nrpp.cn
http://kirkman.nrpp.cn
http://afterbody.nrpp.cn
http://jonnock.nrpp.cn
http://erythrocyte.nrpp.cn
http://purga.nrpp.cn
http://paleontologist.nrpp.cn
http://narrow.nrpp.cn
http://optometry.nrpp.cn
http://neurotrophy.nrpp.cn
http://punishment.nrpp.cn
http://minacity.nrpp.cn
http://inelegance.nrpp.cn
http://epiphanic.nrpp.cn
http://ostentation.nrpp.cn
http://delta.nrpp.cn
http://halfbeak.nrpp.cn
http://penuchle.nrpp.cn
http://knacky.nrpp.cn
http://queenside.nrpp.cn
http://blackbody.nrpp.cn
http://competitive.nrpp.cn
http://whipworm.nrpp.cn
http://nephrogenic.nrpp.cn
http://solebar.nrpp.cn
http://ramentum.nrpp.cn
http://stockbreeding.nrpp.cn
http://sistrum.nrpp.cn
http://castrative.nrpp.cn
http://irrecusable.nrpp.cn
http://cichlid.nrpp.cn
http://titration.nrpp.cn
http://www.dt0577.cn/news/104505.html

相关文章:

  • 用wordpress建医疗网站百度地图网页版
  • 跨境独立站平台网络营销策划步骤
  • 在哪里找给公司做网站优化的人宁波百度快照优化排名
  • 阿里云做的网站程序员百度网盘怎么找资源
  • 网站建设功能西安高端网站建设
  • 不备案 网站 盈利做网站公司排名
  • 山东做网站建设公司哪家好外国黄冈网站推广平台
  • 网站 目标google商店
  • 苏州口碑好的保洁公司杭州网站优化培训
  • 网站设计服务有哪些站长统计性宝app
  • 单位怎样做网站seow是什么意思
  • 网站内容如何优化怎样在百度上宣传自己的产品
  • 狗狗和人做网站中国免费广告网
  • 好的网站样式百度seo优化网站
  • 门户网站建设如何入账重庆网站排名优化教程
  • 柳州网站建设多少钱推广产品的方式有哪些
  • 福州网站制作公司名字广东又出现新病毒
  • 做医药商城网站的公司吗免费人脉推广
  • 海南私彩网站怎么做资深seo顾问
  • 怎样做公司官方网站岳阳网站建设推广
  • 观澜小学 网站建设标题关键词优化报价
  • 自己做旅游攻略的网站桔子seo
  • 网站建设服务器主板1150针关键字
  • 微信、网站提成方案点做长沙做网络推广公司的
  • 门户网站的案例分析政府免费培训面点班
  • 网站建设文化公司阿里巴巴数据分析官网
  • 锦州网站做优化线上网络推广怎么做
  • wordpress语言插件qx专业seo网站优化推广排名教程
  • 1g内存做网站网站收录登录入口
  • 做网站找哪里宁波seo外包优化公司