React高阶组件Hook

React高阶组件HookHook 是 react16 8 新增的 它可以让你在不编写 class 的情况下使用 state 以及其他 react 特性 Hook 特点 使你在无需修改组件的情况下复用状态逻辑 可将组件中互相关联的部分拆分成更小的函数 复杂组件将更容易理解 更简洁 更容易理解的代码先来看个例子 importReact useState from react exportfuncti

Hook是react16.8新增的,它可以让你在不编写class的情况下使用state以及其他react特性。

Hook特点①使你在无需修改组件的情况下复用状态逻辑②可将组件中互相关联的部分拆分成更小的函数,复杂组件将更容易理解③更简洁,更容易理解的代码

先来看个例子

import React,{useState} from 'react' export function Hook(){ const [count,addCount]=useState(5); return 
  

{count}

}

引入useState,它可以对函数组件添加状态,用一个数组接收,上面的count即为5,addCount可以改变它的状态。再看下面的例子

import React,{useState,useEffect} from 'react' export function Hook(){ const [count,addCount]=useState(5); useEffect(()=>{console.log(count)},[]) return 
  

{count}

{a}
}

引入useEffect,它是一个副作用钩子,在组件每次渲染时都会重新执行,它跟class组件的compomentDidMount,CompomentDidUpdate,CompomentWillUnMount具有相同的用途,只是合成了一个api。

还有一个组件跨层级通信Context,它提供了一种不需要每层设置props就可以跨多层组件传递数据的方式

import React,{useContext} from 'react' const myContext=React.createContext() const {Provider,Consumer}=myContext function Hook(prop){ return 
  
{prop.foo}
}//第一种方法 function Hook(prop){ var ctx=useContext(myContext); return
{ctx.foo}
}//第二种方法 class Hook extends React.Component{ static contextType=myContext; render(){ return (
{this.context.foo}
) } }//第三种方法(使用class指定静态contextType) export function ContextTest(){ return(
{foo:'bar'}}> {value=> }
) }

 

引入一个Provider和Consumer,然后就可以把ContextTest的值传递给Hook这个组件。上面还提供了三种方法

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229616.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午4:18
下一篇 2026年3月16日 下午4:18


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号