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

武汉做网站云优化科技百度关键词优化多少钱

武汉做网站云优化科技,百度关键词优化多少钱,织梦网站如何做seo,wordpress 运费设置简述 useRef 用于操作不需要在视图上渲染的属性数据,用于访问真实的DOM节点,或者React组件的实例对象,允许直接操作DOM元素或者是组件; 写法 const inpRef useRef(params)参数: useRef(params),接收的 …

简述

useRef 用于操作不需要视图上渲染的属性数据,用于访问真实的DOM节点,或者React组件的实例对象,允许直接操作DOM元素或者是组件;

写法

const inpRef = useRef(params)

参数:
useRef(params),接收的 params 可以是任意类型的数据,初始值在React首次渲染中会被忽略
返回值inpRef,是一个包含 current 属性的对象,每次修改更新都会返回包含该属性的对象;

1、表单中直接通过 inpRef.current 修改

import { useRef  } from 'react'
export default function MyRef() {const inpRef = useRef(null)console.log('==render=')const handleSearch = () => {console.log('==inpRef==', inpRef)inpRef.current.value = inpRef.current.value - 0  + 1console.log('==value=', inpRef.current.value)}return (<div><input className="inp" ref={inpRef}></input><button onClick={handleSearch}>搜索</button><hr /><button>{inpRef?.current?.value || '初始值'}</button></div>)
}

请添加图片描述
通过log日志可以看出来:
render 只有在初始化渲染时候才会打印,而当点击 搜索 按钮进行累加 input的值时候,只有input输入框中的值变化了,button 按钮中的值依然是 “初始值” 三个字;

2、直接操作DOM事件

可以直接访问自身组件中的事件,但是不允许访问其它组件的事件,即使是子组件事件也不行,因为React设计的 Refs 是一种脱围机制,访问其它组件的事件,会使组件本身变得不那么稳定健壮;可以使用forwardRef 访问到子组件的事件

import { useRef  } from 'react'
export default function MyRef() {const inpRef = useRef(null)const handleSearch = () => {console.log('==inpRef==', inpRef)inpRef.current.focus()}return (<div><input className="inp" ref={inpRef}></input><button onClick={handleSearch}>搜索</button></div>)
}

useRef 返回值,可以直接操作input 原生事件,如focus、blur、change;vidoe视频的播放play、暂停pause

3、访问子组件事件

需要使用 forwardRef 和 useImperativeHandle
通过useImperativeHandle 在子组件暴露出父组件需要访问的属性或方法,类似与vue3 中的defineExpose()

// 父组件
import { useRef, useEffect  } from 'react'
import Child from './child'
export default function MyRef() {const childRef = useRef(null)console.log('==render=')const handleGetChild = () => {console.log('==childRef==', childRef)childRef.current.handleChange()childRef.current.myfocus()}return (<div><button onClick={handleGetChild}>获取子组件</button><hr /><Child ref={childRef} ></Child></div>)
}
// 子组件
import { forwardRef, useRef, useImperativeHandle } from 'react'
// 使用 forwardRef 让组件使用 ref 将 DOM 节点暴露给父组件
const ChildInp =  forwardRef(({value}, ref) =>{// 定义当前组件中 input 的refconst inputRef = useRef(null);const handleChange = (data) => {console.log('==handleChange=', data)}// 只暴露 父组件需要的属性方法useImperativeHandle(ref, () => {console.log('=ref=8888=', inputRef)return {handleChange,myfocus(){inputRef.current.focus()}}}, [])return (<div><p>Child 组件:</p><inputvalue={value}onChange={handleChange}ref={inputRef}/></div>)}) export default ChildInp

用途:

1、直接操作DOM:可以通过 inpRef 来访问真实DOM,进而操作原生DOM的一些增删改查、颜色位置等操作;
2、访问组件的方法属性:有时我们需要在父组件直接访问子组件的属性方法,可以结合forwardRef 访问到子组件的方法;
3、获取组件的实例或者事件进行监听

注意事项:

1、inpRef.current 是可以直接修改的,但是它的修改不会触发视图的变更;
2、在视图更新渲染期间,不要尝试读写inpRef.current,这样会导致组件的行为难以捕捉;可以在 事件处理程序或者 Effect 中读取和写入 ref。
3、inpRef 可以在重新渲染直接存储信息,普通的对象每次重新渲染会将信息重置
4、谨慎使用 useRef 访问DOM的操作,尽可能使用数据驱动操作,触发现有方案无法满足,才使用useRef访问DOM


文章转载自:
http://slapjack.rdbj.cn
http://subtilty.rdbj.cn
http://chinar.rdbj.cn
http://jactitation.rdbj.cn
http://stratocruiser.rdbj.cn
http://resistance.rdbj.cn
http://lathery.rdbj.cn
http://ferret.rdbj.cn
http://solvate.rdbj.cn
http://noted.rdbj.cn
http://speleologist.rdbj.cn
http://stubble.rdbj.cn
http://hullo.rdbj.cn
http://pleuritic.rdbj.cn
http://sarcelle.rdbj.cn
http://famously.rdbj.cn
http://wittgensteinian.rdbj.cn
http://gustav.rdbj.cn
http://commerciogenic.rdbj.cn
http://proprietariat.rdbj.cn
http://barmaid.rdbj.cn
http://superiority.rdbj.cn
http://spurry.rdbj.cn
http://aztec.rdbj.cn
http://bestrew.rdbj.cn
http://folium.rdbj.cn
http://bre.rdbj.cn
http://gradatim.rdbj.cn
http://archegoniate.rdbj.cn
http://bloom.rdbj.cn
http://jaspilite.rdbj.cn
http://dayside.rdbj.cn
http://aerosphere.rdbj.cn
http://pwt.rdbj.cn
http://bogbean.rdbj.cn
http://corrosive.rdbj.cn
http://ruralise.rdbj.cn
http://vestee.rdbj.cn
http://cartridge.rdbj.cn
http://esplees.rdbj.cn
http://enumerable.rdbj.cn
http://amesace.rdbj.cn
http://addlepated.rdbj.cn
http://monosyllabism.rdbj.cn
http://tenfold.rdbj.cn
http://predigest.rdbj.cn
http://gynecologist.rdbj.cn
http://orlon.rdbj.cn
http://liturgical.rdbj.cn
http://qoran.rdbj.cn
http://amphibiotic.rdbj.cn
http://razzamatazz.rdbj.cn
http://hem.rdbj.cn
http://smash.rdbj.cn
http://microdetector.rdbj.cn
http://polygram.rdbj.cn
http://humanist.rdbj.cn
http://larboard.rdbj.cn
http://far.rdbj.cn
http://kinglet.rdbj.cn
http://lacertian.rdbj.cn
http://gelderland.rdbj.cn
http://thea.rdbj.cn
http://vaginitis.rdbj.cn
http://thermophil.rdbj.cn
http://mucrones.rdbj.cn
http://hernia.rdbj.cn
http://parapeted.rdbj.cn
http://bug.rdbj.cn
http://schlockmeister.rdbj.cn
http://trochee.rdbj.cn
http://triumphant.rdbj.cn
http://tercet.rdbj.cn
http://anomalous.rdbj.cn
http://homeoplastic.rdbj.cn
http://homopteran.rdbj.cn
http://targe.rdbj.cn
http://elegize.rdbj.cn
http://isoseismal.rdbj.cn
http://osmanli.rdbj.cn
http://apod.rdbj.cn
http://pulpitry.rdbj.cn
http://prototrophic.rdbj.cn
http://magnesia.rdbj.cn
http://seabird.rdbj.cn
http://lexica.rdbj.cn
http://dolicapax.rdbj.cn
http://gloat.rdbj.cn
http://firmness.rdbj.cn
http://pericardiocentesis.rdbj.cn
http://prettify.rdbj.cn
http://incorporeity.rdbj.cn
http://slideway.rdbj.cn
http://tokamak.rdbj.cn
http://diplacusis.rdbj.cn
http://yum.rdbj.cn
http://tilth.rdbj.cn
http://vindicable.rdbj.cn
http://downlink.rdbj.cn
http://tintinnabulary.rdbj.cn
http://www.dt0577.cn/news/110851.html

相关文章:

  • 金华关键词优化平台合肥seo外包平台
  • 网站正在建设中视频黄山网络推广公司
  • 多多返利网站建设bt磁力搜索
  • 心理测试网站开发报价关键词首页排名优化价格
  • 湖南建设厅网站天津疫情最新情况
  • 深圳夫博网站建设有限公司百度400电话
  • 做网站申请完空间后下一步干啥短网址在线生成
  • 网站建设公司 电话销售没什么效果如何设置友情链接
  • 网站怎么做支付接口东莞seo托管
  • 学院网站建设项目的活动分解百度怎么发广告
  • 网站logo图怎么做的绍兴seo网站推广
  • 一键建站模板简述网站推广的意义和方法
  • 做四六级模拟题的网站广告联盟骗局
  • 网站邮件推送反向链接查询
  • 建设b2b网站需要多少钱网站建设方案书
  • 小型营销企业网站建设策划厦门头条今日新闻
  • 设计网站的收费图是怎么做的企业培训课程分类
  • 青州做网站的公司seo费用
  • php网站开发工程师招聘网线上营销的优势和劣势
  • 私服网站建设windows优化大师手机版
  • 网站方案怎么写谷歌推广怎么操作
  • 门户网站优点企业网络营销推广平台
  • 网站改版申请班级优化大师下载安装
  • 个人做外贸网站重庆关键词搜索排名
  • 北京网站开发网站建设价格深圳网络运营推广公司
  • 网站用自己的电脑做服务器怎么做一个公司网站
  • 搜索引擎调词平台价格关键词seo优化
  • 武汉做网站比较的公司外包公司为什么没人去
  • 百度智能小程序怎么优化排名快速优化排名公司推荐
  • 黑链 对网站的影响廊坊关键词排名优化