React Hook

Hook 是 React 16.8 增加的新特性,它可以使你在不使用 class 的时候使用 state 和 react 的其他特性。

State Hook

例:用 State Hook 实现一个计数器。

import React,{useState} from 'react';

function Counter(){
	const [count,setCount] = useState(0);

	return <>
		<p>当前计数:{count}</p>
		<button onClick={() => setCount(count + 1)}>点击加一</button>
	</>
}
ReactDOM.render(<Counter />,document.getElementById('root'))
  1. useState 唯一的参数就是传进去的初始参数 ‘0’,它不是一个对象。如果需要的话,可以把它设置为对象,且这个参数只有第一次渲染时会用到。
  2. 解构出来的第一个参数是初始化 state 返回的 getter。第二个参数是修改初始化参数的回调函数。
  3. Hook 不能在 class 组件中使用。
  4. 更新 state,总是替换它,而不是像 class 中的状态合并它。
Effect Hook

Effect Hook 类似于 class 组件中的componentDidMount、componentDidUpdate 和 componentWillUnmount,它们的用途相似,所以表现就为:React 完成 DOM 的更改之后,Effect 会运行,因为它在组件内部声明,同时它也就可以访问到组件的 props 和 state。

import React,{useState,useEffect} from 'react';

function Counter(){
	const [count,setCount] = useState(0);
	useEffect(()=>{document.title = `点击了${count}次`})
	return <>
		<p>当前计数:{count}</p>
		<button onClick={() => setCount(count + 1)}>点击加一</button>
	</>
}
ReactDOM.render(<Counter />,document.getElementById('root'))
  • 上面这个例子,当点击了 button ,更新完 DOM 之后,标题会因为 Effect 函数更新。
  • 在 Effect 里面返回一个清除 Effect 的,这样就可以取消 Effect 对这个组件的订阅。
Hook 使用规则
  1. 只能在函数最外层调用 Hook,不要在循环、条件判断或者子函数中调用。
  2. 只能在 React 的函数组件中调用 Hook。不要在其他 JavaScript 函数中调用。
回答: React HookReact的新增特性,它可以让你在不编写class的情况下使用state以及其他的React特性。它为已知的React概念提供了更直接的API,如props、state、context、refs以及生命周期。Hook不能在class中使用。\[1\] Hook的使用规则包括只能在函数外层调用Hook,不要在循环、条件判断或者子函数中调用,以及只能在React的函数组件和自定义Hook中调用Hook,不要在其他JavaScript函数中调用。\[3\]其中,useState是一种Hook,它允许你在React函数组件中添加state。使用useState方法时,可以通过const \[state, setState\] = useState(initialState)来声明一个state变量,并使用setState来更新该变量的值。\[3\] #### 引用[.reference_title] - *1* [【React-Hook】详解](https://blog.csdn.net/GengFuGuo/article/details/124840750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [react 中的Hook 用法及介绍](https://blog.csdn.net/SongdanDab/article/details/128650378)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值