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

无锡快速建设网站方法站长之家seo工具

无锡快速建设网站方法,站长之家seo工具,房屋设计平面图,哪个企业的网站做的比较好1. useRef(保存引用值) useRef 通常用于保存“不会参与 UI 渲染,但生命周期要长”的对象引用,比如获取 DOM、保存定时器 ID、WebSocket等。 新建useRef.js组件,写入代码: import React, { useRef, useSt…

 

1. useRef(保存引用值)

useRef 通常用于保存“不会参与 UI 渲染,但生命周期要长”的对象引用,比如获取 DOM、保存定时器 ID、WebSocket等。

新建useRef.js组件,写入代码:

import React, { useRef, useState } from 'react'export default function UseRef() {const name = useRef<HTMLInputElement>(null)let [list, setList] = useState(['000', '111', '222'])let btnHandle = () => {if (name.current) {setList([...list, name.current.value])name.current.value = ''}}let delHandle = (index: number) => {let temList = [...list]temList.splice(index, 1)setList(temList)}return (<div><input ref={name} /><button onClick={btnHandle}>click</button><ul>{list.map((value, index) => {return (<li key={index}>{value}<button onClick={() => delHandle(index)}>删除</button></li>)})}</ul></div>)
}

上面的name会保存引用值,可以带入到点击事件,效果: 

不仅如此,useRef还能在函数组件中保持状态:

import React, { useState, useRef } from 'react'export default function UseRef() {const [count, setCount] = useState(0)let myCount = useRef(0)const addHandle = () => {setCount(count + 1)myCount.current++}return (<div><button onClick={addHandle}>click</button>{count} - {myCount.current}</div>)
}

上面的myCount当值变化时,能够实时保存。

2. useCallback(记忆函数)

防止因为组件重新渲染,导致方法被重新创建,起到缓存作用,只有第二个参数变化了,才重新声明一次。

新建 UseCallback.js方法组件,写入代码:

import React, { useCallback, useEffect } from 'react'export default function UseCallback() {const [userId, setUserId] = useState(1)const [user, setUser] = useState<any>(null)const [counter, setCounter] = useState(0)const fetchUser = useCallback(() => {console.log(`Fetching user with ID ${userId}...`)fetch(`https://jsonplaceholder.typicode.com/users/${userId}`).then(res => res.json()).then(data => setUser(data))}, [userId])useEffect(() => {fetchUser()}, [fetchUser])return (<div><h2>用户信息</h2>{user ? (<div><p>名字: {user.name}</p><p>邮箱: {user.email}</p></div>) : (<p>加载中...</p>)}<button onClick={() => setUserId(id => id + 1)}>切换用户</button><button onClick={() => setCounter(c => c + 1)}>其他按钮(不影响 fetch)</button><p>Counter: {counter}</p></div>)
}export default UseCallback

上面仅当 userId 变化时,fetchUser 函数才会变化,userId 不变就不重新生成函数。效果: 

如果不使用 useCallback,每次渲染时函数都会创建,这在传给子组件或放到 useEffect / onClick 等地方时,会带来性能浪费、重复渲染、无法复用的问题。

3. useMemo(记忆组件)

useMemo 是 值级缓存,用于缓存变量、数组、对象、计算结果,不同于 useCallback 是 函数级缓存。

import React, { useState, useMemo } from 'react'const UserList = () => {const [query, setQuery] = useState('')const [users] = useState(['Alice', 'Bob', 'Charlie', 'David', 'Eva', 'Frank', 'George'])const filteredUsers = useMemo(() => {console.log('Filtering...')return users.filter(user => user.toLowerCase().includes(query.toLowerCase()))}, [query, users])return (<div><inputplaceholder="搜索用户"value={query}onChange={(e) => setQuery(e.target.value)}/><ul>{filteredUsers.map((user, index) => (<li key={index}>{user}</li>))}</ul></div>)
}export default UserList

结果:

 上面只有当 query 或 users 变化时,才重新过滤;如果不使用 useMemo,每次组件渲染时,users.filter(...) 都会执行一次,即使输入没有变。


文章转载自:

http://p8OgwJmz.bftqc.cn
http://8LkZD1U2.bftqc.cn
http://oJGcSHMN.bftqc.cn
http://ezwgfY2x.bftqc.cn
http://ZDq4VsM0.bftqc.cn
http://YW9FHkeP.bftqc.cn
http://6rVXYO5w.bftqc.cn
http://5h0JI0fz.bftqc.cn
http://oZOzNCDJ.bftqc.cn
http://CuAlHiwG.bftqc.cn
http://Ngdncb02.bftqc.cn
http://OCAJPH4G.bftqc.cn
http://TH7g2jIl.bftqc.cn
http://tmti2uFG.bftqc.cn
http://ILmQWPUp.bftqc.cn
http://Yu8lX9oj.bftqc.cn
http://dvRnOdfe.bftqc.cn
http://GQ5DLD9J.bftqc.cn
http://mfoOLmg4.bftqc.cn
http://twYR2tiZ.bftqc.cn
http://6i18U26e.bftqc.cn
http://7MwiazN2.bftqc.cn
http://UyVvTGs0.bftqc.cn
http://UuPCNlDH.bftqc.cn
http://ViW6UCC0.bftqc.cn
http://lXsuEnCt.bftqc.cn
http://5HgXeruR.bftqc.cn
http://B6dCLNVr.bftqc.cn
http://exlK0kk3.bftqc.cn
http://ZbSHKXur.bftqc.cn
http://www.dtcms.com/wzjs/777476.html

相关文章:

  • 网站推广策划书范文ps制作博客网站界面
  • 手机网站制作公司报价单河南网站开发公司
  • 最专业的网站建设公司哪家好做美团网这种网站赚钱吗
  • 青岛团购网站建设公司做的网站过期了
  • 做网站国内好的服务器网站开发费怎样入账
  • 公司建设网站的报告那些网站可以做自媒体
  • 徐州网站建设一薇中国纪检监察报官网
  • 网站建设使用的什么软件有哪些方面美容美发培训职业学校
  • 宁晋县建设局网站防伪网站模板
  • 医疗软件网站建设石家庄建设信息网官方网站
  • 网站建设内容互联网销售模式
  • seo是什么意思seo是什么职位郑州seo顾问培训
  • 怎么破解别人做的付费网站网站空间怎样算
  • 建网站 企汇网网站建设与管理教学视频教程
  • dx网站是哪家公司做的大连建网站策划
  • 有什么建筑网站江苏企业建设网站公司
  • 网站开发实训h5总结欧派全屋定制
  • 做科技公司的网站公司擦边球做网站挣钱
  • 创建公司网站需要什么网站 系统设置
  • 免费建站还用学做网站吗怎么查看网站的友情链接
  • 网站优化软件开发佛山网站建设方案咨询
  • 如何 建公司网站wordpress目录页面
  • 婚恋网站设计如何做提升自己的网站
  • 网站推广的方法谷歌浏览器网页版进入
  • 广西网站建设哪家不错哪家网站开发
  • 做一个网站要怎么做的网站建设
  • 广州英铭网站建设工业设计公司如何选择
  • 政务类网站建设锦州网站建设资讯
  • 导视设计网站wordpress加入游戏
  • 百度医院网站建设企业网络的规划与设计