react的hooks的用法详解


Posted in Javascript onOctober 12, 2020

hooks的作用

它改变了原始的React类的开发方式,改用了函数形式;它改变了复杂的状态操作形式,让程序员用起来更轻松;它改变了一个状态组件的复用性,让组件的复用性大大增加。

useState

// 声明状态
const [ count , setCount ] = useState(0);

// 使用状态
<p>You clicked {count} times</p>
<button onClick={()=>{setCount(count+1)}}>click me</button>

useEffect

一个参数

useEffect(()=>{
 console.log("首次渲染与更新")
})

模拟:
componentDidMount componentDidUpdate

一个参数带return

useEffect(()=>{
 console.log("首次渲染与更新")
return ()=>{console.log(首次卸载)}
})

 模拟:

  • componentDidMount
  •  componentDidUpdate

return

  •  componetWillUnmount
  •  componentDidUpdate

第二个参数是空数组,return

useEffect(()=>{
 console.log("首次渲染与更新")
return ()=>{console.log(首次卸载)}
},[])

相对于生命周期的componentDidMount和componetWillUnmount

第二个参数是具体的值

useEffect(()=>{
 console.log("首次渲染与更新")
return ()=>{console.log(首次卸载)}
},[num])

模拟

  • componentDidMount
  • componentDidUpdate(update只对num有用)

return

  •  componetWillUnmount
  •  componentDidUpdate(update只对num有用)

useRef

const inp = useRef(null)
<input ref={inp}>
//调用
inp.current.value

自定义hook

定义:const [size,setSize] = useState({height:xxx,width:xxx})

处理:

const onResize = ()=>{setSize({width:xxx,height:xxx})}
 useEffect(()=>{
监听事件 window.addEventListener(“resize”,onResize)
 return 移除监听()=>window.removeEventListener(“resize”,onResize)
 },[])

返回 return size

使用 const size = useWinSize()

到此这篇关于react的hooks的用法详解的文章就介绍到这了,更多相关react hooks用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Javascript代码混淆综合解决方案-Javascript在线混淆器
Dec 18 Javascript
javascript document.compatMode兼容性
Feb 23 Javascript
javascript 类型判断代码分析
Mar 28 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
javascript关于继承的用法汇总
Dec 20 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
微信小游戏中three.js离屏画布的示例代码
Oct 12 #Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 #Javascript
分享8个JavaScript库可更好地处理本地存储
Oct 12 #Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 #Javascript
Webpack5正式发布,有哪些新特性
Oct 12 #Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 #Javascript
移动端JS实现拖拽两种方法解析
Oct 12 #Javascript
You might like
深入PHP变量存储的详解
2013/06/13 PHP
php单一接口的实现方法
2015/06/20 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
JavaScript 继承详解(三)
2009/07/13 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
jQuery模仿单选按钮选中效果
2016/06/24 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
微信小程序实现搜索功能
2020/03/10 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
python字符串替换示例
2014/04/24 Python
Python with的用法
2014/08/22 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
快速查找Python安装路径方法
2020/02/06 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
医学专业应届生的自我评价
2014/02/28 职场文书
2014年高考决心书
2014/03/11 职场文书
村道德模范事迹材料
2014/08/28 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书