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

做课件好用的网站传奇类网页游戏大全

做课件好用的网站,传奇类网页游戏大全,网络管理系统界面,北京it培训机构哪家好一、useRef useRef返回一个ref对象#xff0c;返回的ref对象再组件的整个生命周期保持不变。 最常用的ref是两种用法#xff1a; 用法一#xff1a;引入DOM#xff08;或者组件#xff0c;但是需要是class组件#xff09;元素#xff1b; 案例一#xff1a;引用DOM …一、useRef useRef返回一个ref对象返回的ref对象再组件的整个生命周期保持不变。 最常用的ref是两种用法 用法一引入DOM或者组件但是需要是class组件元素 案例一引用DOM import React, {useRef} from react;class TestCpn extends React.Component{render() {return h2TestCpn/h2} }function TestCpn2(props) {return h2TestCpn2/h2 }export default function RefHookDemo01() {const titleRef useRef()const inputRef useRef()const testRef useRef()const testRef2 useRef()function changeDOM() {titleRef.current.innerHTML hello worldinputRef.current.focus()console.log(testRef.current)console.log(testRef2.current)}return (divh2 ref{titleRef}RefHookDemo01/h2input typetext ref{inputRef}/TestCpn ref{testRef} /TestCpn2 ref{testRef2} /button onClick{e changeDOM()}修改DOM/button/div) } 用法二保存一个数据这个对象在整个生命周期中可以保存不变 案例二使用ref保存上一次的某一个值 import React, {useEffect, useRef, useState} from react;export default function RefHookDemo02() {const [count, setCount] useState(0)const numRef useRef(count)useEffect(() {numRef.current count}, [count])return (div{/*h2numRef中的值: {numRef.current}/h2*/}{/*h2count中的值: {count}/h2*/}h2count上一次的值{numRef.current}/h2h2count当前的值{count}/h2button onClick{e setCount(count 10)}10/button/div) } 二、useImperativeHandle useImperativeHandle并不是特别好理解我们一点点来学习。 我们先来回顾一下ref和forwardRef结合使用 通过forwardRef可以将ref转发到子组件子组件拿到父组件中创建的ref绑定到自己的某一个元素中 import React, {forwardRef, useRef} from react;const HYInput forwardRef((props,ref) {return input ref{ref} typetext/} )export default function ForwardRefDemo() {const inputRef useRef()return (divHYInput ref{inputRef}/button onClick{e inputRef.current.focus()}聚焦/button/div) } forwardRef的做法本身没有什么问题但是我们是将子组件的DOM直接暴露给了父组件 直接暴露给父组件带来的问题是某些情况的不可控父组件可以拿到DOM后进行任意的操作但是事实上在上面的案例中我们只是希望父组件可以操作的focus其他并不希望它随意操作 通过useImperativeHandle可以只暴露固定的操作 通过useImperativeHandle的Hook将传入的ref和useImperativeHandle第二个参数返回的对象绑定到了一起所以在父组件中使用 inputRef.current时实际上使用的是返回的对象比如我调用了 focus函数 import React, {forwardRef, useImperativeHandle, useRef} from react;const HYInput forwardRef((props, ref) {const inputRef useRef()useImperativeHandle(ref, () {return {focus: () {inputRef.current.focus()console.log(useImperativeHandle中回调函数返回的对象里面的focus)}}}, [inputRef.current])return input ref{inputRef} typetext/} )export default function ForwardRefDemo02() {const inputRef useRef()return (divHYInput ref{inputRef}/button onClick{e inputRef.current.focus()}聚焦/button/div) } 三、useLayoutEffect useLayoutEffect看起来和useEffect非常的相似事实上他们也只有一点区别而已 useEffect会在渲染的内容更新到DOM上后执行不会阻塞DOM的更新useLayoutEffect会在渲染的内容更新到DOM上之前执行会阻塞DOM的更新 如果我们希望在某些操作发生之后再更新DOM那么应该将这个操作放到useLayoutEffect。 案例 useEffect和useLayoutEffect的对比 四、自定义Hook 自定义Hook本质上只是一种函数代码逻辑的抽取严格意义上来说它本身并不算React的特性。 需求0所有的组件在创建和销毁时都进行打印 组件被创建打印 组件被创建了组件被销毁打印 组件被销毁了 import React, {useEffect} from react; const Home (props) {useEffect(() {console.log(Home组件被创建出来了~)return () {console.log(Home组件被销毁了)}}, [])return h2Home/h2 } const Profile (props) {useEffect(() {console.log(Profile组件被创建出来了~)return () {console.log(Profile组件被销毁了)}}, [])return h2Profile/h2 } export default function CustomHookLifeDemo01() {useEffect(() {console.log(CustomHookLifeDemo01组件被创建出来了~)return () {console.log(CustomHookLifeDemo01组件被销毁了)}}, [])return (divh2CustomHookLifeDemo01/h2Home /Profile //div) } import React, {useEffect} from react; const Home (props) {useLoggingLife(Home)return h2Home/h2 } const Profile (props) {useLoggingLife(Profile)return h2Profile/h2 } export default function CustomHookLifeDemo01() {useLoggingLife(CustomHookLifeDemo01)return (divh2CustomHookLifeDemo01/h2Home /Profile //div) } function useLoggingLife(name) {useEffect(() {console.log(${name}组件被创建出来了~)return () {console.log(${name}组件被销毁了)}}, []) } 需求一Context的共享 import {useContext} from react; import {TokenContext, UserContext} from ../App;function useUserContext() {const user useContext(UserContext)const token useContext(TokenContext)return [user, token] }export default useUserContext 需求二获取鼠标滚动位置 需求三localStorage数据存储
http://www.sadfv.cn/news/6086/

相关文章:

  • wordpress主题6网站建设优化开发公司哪家好
  • 北京企业网站模板建站怎么用广东手机网站建设哪家专业
  • 网站已备案下一步怎么做网站建设和推广方案
  • 网站建设要准备什么nike官网宣传片
  • 网站制作厂家wordpress文档案例
  • 上海电信网站备案网站手机pc同步
  • visual studio制作网站开发特价旅游机票网站建设
  • 360网站收录盐城市城南建设局网站
  • 网站做美食视频挣钱吗美团如何进行网站的建设和维护
  • 公司网站费用计入什么科目wordpress主题php
  • 备案网站大全购物商城项目
  • 网站建设 选择题东莞门户网站建设
  • 广东地区建网站的公司室内设计效果图在哪里找
  • 抚顺做网站网站建设西安
  • 湖南网站建设营销推广百度一下你就知道官方
  • 高端网站开发哪里好低价网站建设联系方式
  • 深圳网站建设流程西安网站建设 中讯创赢
  • 河海大学学风建设网站注册公司的流程和材料
  • 网站建设 地址 昌乐爱网站
  • 漫画做视频在线观看网站网站SEO优化实训
  • 株洲营销型网站建设小学班级活动设计方案模板
  • 网站开发和安卓开发小程序商城首页设计
  • 网站是否被百度收录竞价推广哪家公司好
  • qq小程序开发导购网站的seo怎么做
  • 如何使用模板做网站鞍山钟点工招聘信息
  • 建站系统多少钱wordpress自动发布网站
  • 湖南网站制作哪家好顺德网站建设域名
  • 全网自媒体平台网站推广和优化教程
  • 网站综合营销方案设计自己可以做开奖网站吗
  • 广州做网站的哪家好源码库官网