react hooks

这篇具有很好参考价值的文章主要介绍了react hooks。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.useState()

功能:让函数组件也可以有state状态, 并进行状态数据的读写操作
语法:const [xxx, setXxx] = React.useState(initValue)
  • 参数: 第一次初始化指定的值在内部作缓存
  • 返回值: 包含2个元素的数组, 第1个为内部当前状态值, 第2个为更新状态值的函数
  • setXxx()2种写法:
    • setXxx(newValue): 参数为非函数值, 直接指定新的状态值, 内部用其覆盖原来的状态值
    • setXxx(value => newValue): 参数为函数, 接收原本的状态值, 返回新的状态值, 内部用其覆盖原来的状态值
代码:
import React from 'react'
import ReactDOM from 'react-dom'
function Demo(){
	const [count,setCount] = React.useState(0)
	//加的回调
	function add(){
		//setCount(count+1) //第一种写法
		setCount(count => count+1 )
	}
	return (
		<div>
			<h2>当前求和为:{count}</h2>
			<button onClick={add}>点我+1</button>
		</div>
	)
}
export default Demo

useEffect()

功能:在函数组件中执行副作用操作(用于模拟类组件中的生命周期钩子)
  • react中的副作用操作:
    • 发ajax请求数据获取
    • 设置订阅 / 启动定时器
    • 手动更改真实DOM
语法:
 useEffect(() => { 
	// 在此可以执行任何带副作用操作
	return () => { // 在组件卸载前执行
		// 在此做一些收尾工作, 比如清除定时器/取消订阅等
	}
}, [stateValue]) // 如果指定的是[], 回调函数只会在第一次render()后执行
  • 第二个参数传递情况:
    • 不传时,执行时间为初次渲染和state中任何状态改变时;
    • 为[]时,执行时间为初次渲染;
    • 数组中有值时[stateValue],执行时间为初次渲染和指定stateValue状态改变时;
  • 可以看做如下三个函数的组合
    • componentDidMount()
    • componentDidUpdate()
    • componentWillUnmount()
代码:
import React from 'react'
import ReactDOM from 'react-dom'
function Demo(){
	const [count,setCount] = React.useState(0)
	React.useEffect(()=>{
		let timer = setInterval(()=>{
			setCount(count => count+1 )
		},1000)
		return ()=>{
			clearInterval(timer)
		}
	},[])
	//加的回调
	function add(){
		//setCount(count+1) //第一种写法
		setCount(count => count+1 )
	}
	return (
		<div>
			<h2>当前求和为:{count}</h2>
			<button onClick={add}>点我+1</button>
		</div>
	)
}
export default Demo

useCallback()

功能:记忆函数,它可以防止因为组件重新渲染,导致方法被重新创建,起到缓存作用
语法:
useCallback(() => {
    // 回调函数,当stateValue改变后,该函数才会重新声明
}, [stateValue])
  • 第二个参数传递情况:
    • 为空数组,就是第一次创建后就被缓存,如果后期stateValue改变了,拿到的还是老的stateValue
    • 不传入第二个参数,每次都会重新声明一次,拿到的就是最新的stateValue

useMemo()

功能: useCallback()的功能可以由useMemo()所替代,useMemo()也可以返回一个记忆函数
语法:useMemo(() => fn, [])

useRef()

功能:保存标签对象,功能与React.createRef()一样
语法:const refContainer = useRef()
代码:
import React from 'react'
import ReactDOM from 'react-dom'
function Demo(){
	const [count,setCount] = React.useState(0)
	const myRef = React.useRef()
	//加的回调
	function add(){
		//setCount(count+1) //第一种写法
		setCount(count => count+1 )
	}
	//提示输入的回调
	function show(){
		alert(myRef.current.value)
	}
	return (
		<div>
			<input type="text" ref={myRef}/
			<h2>当前求和为:{count}</h2>
			<button onClick={add}>点我+1</button>
		</div>
	)
}
export default Demo

useContext()

功能: 可以共享状态,作用是进行状态的分发(React16.x以后的版本支持),避免了使用Props进行数据的传递
语法:
// 第一步:创建全局的Context
const AppContext = React.createContext([初始化参数])
function Demo {
	render(
		// 第二步:通过全局的Context进行状态值的共享
		<AppContext.Provider value={{ name: '张三' }}>
		    <A />
		    <B />
		</AppContext>
	)
}

// 第三步: 在组件中获取
function B {
	const {name} = useContext(AppContext);
	return (
		<div className="grand">
			<h3>我是B组件</h3>
			<h4>我从Demo组件接收到的名字: {name}</h4>
		</div>
	)
}

useReducer()

功能:
语法:

文章来源地址https://www.toymoban.com/news/detail-453641.html

到了这里,关于react hooks的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React类组件和函数组件对比-Hooks的介绍及初体验

    Hooks出现的原因 Hook 是 React 16.8 的新增特性,它可以让我们在不编写class的情况下, 使用state以及其他的React特性( 比如生命周期 ) 。 我们先来思考一下class组件相对于函数式组件有什么优势?比较常见的是下面这些优势 : class组件可以定义自己的state,用来保存组件自己内部的状

    2024年01月16日
    浏览(33)
  • 面试中问:React中函数组件和class组件的区别,hooks模拟生命周期

    React 的函数组件和类组件在很多方面都相似,但它们也有一些关键的差异。以下是这两种组件之间的主要区别: 定义方式 : 函数组件 : 是简单的 JavaScript 函数,接受 props 为参数,并返回 React 元素。 类组件 : 是 ES6 的类,继承的时候要用到 extends React.Component,至少包含一个名

    2024年02月11日
    浏览(33)
  • React Hook入门小案例 在函数式组件中使用state响应式数据

    Hook是react 16.8 新增的特性 是希望在不编写 class的情况下 去操作state和其他react特性 Hook的话 就不建议大家使用class的形式了 当然也可以用 这个他只是不推荐 我们还是先创建一个普通的react项目 我们之前写一个react组件可以这样写 简单说 就是声明一个类对象 然后在里面 写组

    2024年02月09日
    浏览(43)
  • 【《React Hooks实战》——指导你使用hook开发性能优秀可复用性高的React组件】

    使用React Hooks后,你很快就会发现,代码变得更具有组织性且更易于维护。React Hooks是旨在为用户提供跨组件的重用功能和共享功能的JavaScript函数。利用React Hooks, 可以将组件分成多个函数、管理状态和副作用,并且不必声明类即可调用React内置的功能。而且,上述所有的操作

    2024年02月14日
    浏览(27)
  • react使用hook封装一个tab组件

    2024年02月09日
    浏览(37)
  • 前端开发笔记 | React Hooks子组件和父组件交互

    前端开发框架目前比较常用的就是react、vue等,其中使用React Hooks 带来了不少的好处,今天来聊聊React Hooks开发方式下,子组件和父组件的交互。 子组件定义 父组件调用子组件 父组件定义 子组件中刷新父组件按钮文案 实际效果:点击子组件中“改变父组件按钮”,父组件中

    2024年02月11日
    浏览(70)
  • react Hook+antd封装一个优雅的弹窗组件

    前言 在之前学vue2的时候封装过一个全局的弹窗组件,可以全局任意地方通过this调用,这次大创项目是用react技术栈,看了一下项目需求,突然发现弹窗还是比较多的,主要分为基础的弹窗以及form表单式的弹窗,如果只是无脑的去写代码,那些项目也没啥必要了。正好react和

    2024年02月13日
    浏览(31)
  • React Hook - useEffecfa函数的使用细节详解

    useEffecf基本使用 书接上文, 上一篇文章我们讲解了State Hook, 我们已经可以通过这个hook在函数式组件中定义state 我们知道在类组件中是可以有生命周期函数的, 那么如何在函数组件中定义类似于生命周期这些函数呢? Effect Hook 可以让你来完成一些类似于class中生命周期的功能; 事

    2023年04月12日
    浏览(27)
  • react18 hooks自定义移动端Popup弹窗组件RcPop

    基于 React18 Hooks 实现手机端弹框组件 RcPop react-popup 基于 react18+hook 自定义多功能弹框组件。整合了 msg/alert/dialog/toast及android/ios 弹窗效果。支持 20+ 自定义参数、 组件式+函数式 调用方式,全方位满足各种弹窗场景需求。 在需要使用弹窗的页面引入组件。 RcPop支持  组件式+函

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包