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

光电工程东莞网站建设ps企业网站模板免费下载

光电工程东莞网站建设,ps企业网站模板免费下载,福州设计公司,wordpress开基本用法 在类组件中获取一个dom元素实例,可以通过React.CreateRef或者回调函数的方式去获取。语法:const refContainer useRef(initialValue);使用场景:在 React 中进行 DOM 操作时,用来获取 DOM作用:返回一个带有 …

基本用法

  • 在类组件中获取一个dom元素实例,可以通过React.CreateRef或者回调函数的方式去获取。
  • 语法:const refContainer = useRef(initialValue);
  • 使用场景:在 React 中进行 DOM 操作时,用来获取 DOM
  • 作用:返回一个带有 current 属性的可变对象,通过该对象就可以进行 DOM 操作了。

const inputRef = useRef(null)

解释:

  • 参数:在获取 DOM 时,一般都设置为 null
  • 返回值:包含 current 属性的对象。

  • 注意:只要在 React 的函数组件中进行 DOM 操作,都可以通过 useRef Hook 来获取 DOM(比如,获取 DOM 的宽高等)。
  • 注意:useRef不仅仅可以用于操作DOM,还可以操作组件

通过useRef获取DOM元素或组件实例:

import React from 'react'
import {useRef} from 'react'export default function UseRef() {let inputRef = useRef()function login() {console.log(inputRef.current.value)}return (<div><input ref={inputRef} placeholder={'请输入账号'} /><button onClick={login}>登录</button></div>)
}

绑定ref后,和React.createRef返回的结构一致,通过.current获取到元素。

useRef保存数据

在文件中定义一个全局变量保存数据

存在 bug

UseRef.jsx

import {useRef, useState} from "react";let count = 0;export default function UseRef() {console.log('ref')let inputRef = useRef()function login() {count += 1;}function printCount() {console.log(count)}return (<div><input ref={inputRef} placeholder={'请输入账号'} /><button onClick={login}>登录</button><button onClick={printCount}>打印count</button></div>)
}

这种全局保存变量的方式,有问题,原因在于在组件中多次使用这个组件会共享数据,可能会导致一些bug存在。

import UseRef from './components/UseRef'export default function App() {return (<div><UseRef /><UseRef /></div>)
}

在函数组件中直接定义变量

存在 bug

import {useRef, useState} from "react";export default function UseRef() {let count = 0;console.log('ref')let inputRef = useRef()let [name, setName] = useState('张三')function login() {count += 1;}function printCount() {console.log(count)}return (<div><input ref={inputRef} placeholder={'请输入账号'} /><button onClick={login}>登录</button><button onClick={printCount}>打印count</button>姓名:{name}<button onClick={() => setName('李四')}>修改name</button></div>)
}

这种方式可以短暂的保存值,但是一旦函数组件更新渲染,那么这个变量的值就会重置

原因是因为函数组件更新渲染时,代码从上往下重新运行。

使用useRef保存值

在整个生命周期里ref里存储的都是同一个,这样就可以----

解决闭包陷阱问题

import {useRef, useState} from "react";export default function UseRef() {// let count = 0;let count = useRef(0);console.log('ref')let inputRef = useRef()let [name, setName] = useState('张三')function login() {// console.log(inputRef.current.value)count.current += 1;}function printCount() {console.log(count.current)}return (<div><input ref={inputRef} placeholder={'请输入账号'} /><button onClick={login}>登录</button><button onClick={printCount}>打印count</button>姓名:{name}<button onClick={() => setName('李四')}>修改name</button></div>)
}

通过useRef保存值,可以长期存贮,不会重置

使用useRef定义变量的好处:

  • 修改state后ref保存的数据不会变化
  • 多个组件的数据,不会共享,类似于class的实例字段
  • 修改ref的保存值,不会引起组件的更新渲染。

总结

http://www.yayakq.cn/news/901348/

相关文章:

  • 徐州网站建设一薇做ppt常用网站
  • 阿里巴巴网站官网赣州网站建设公司
  • 北京营销型网站建设多少钱抖音代运营一般收费
  • 网站建设多少钱一个月毕业设计博客网站开发
  • 网站建设SEO优化深圳市宝安区是不是很偏僻
  • 直播网站源码免费下载程序员做的导航网站
  • 安阳网络教研平台登录商丘做网站公司新站seo快速收录网页内容页的方法
  • 品牌网站建设搜搜磐石网络西宁网络公司电话
  • vr网站开发技术北京建筑人才招聘网
  • 用dw做网站背景河南省建设厅官方网站 吴浩
  • 学习建设网站书籍关键词文案生成器
  • 网站建设佰金手指科杰三十河南炒股配资网站开发
  • 西安网站建设l西安搜推宝网络厦门网站建设方案
  • 南沙建设局网站wordpress设置邮件注册
  • 网站建设案例分享温州在线制作网站
  • 自己做免流网站安徽建筑大学招生网录取查询
  • 庆阳做网站公司网站设计公司推荐
  • 天津网站在哪里建设全国网页制作大赛
  • 许昌小学网站建设插件素材网站
  • 在微信上做彩票网站吗网站备案政策
  • 温州专业手机网站制作哪家好wordpress301插件
  • 网站开发翻译插件广告设计专业专升本有哪些专业
  • 阜宁网站制作具体报价wordpress计数器
  • 网站备案进程查询网站制作首选 新鸿儒
  • dw建设手机网站品牌网络推广方式
  • 嘉兴网站制作平台互联网运营在线培训
  • 手机版网站怎么上传厅网站建设中标公告
  • 网站运营方案书个人网站怎么做游戏
  • 外贸国际站有哪些平台海口平台公司
  • 无锡专业制作网站wordpress 禁用编辑器