React的高阶组件详解
-
接受一个或多个函数作为参数; 返回一个新的函数;
2 使用场景(页面权限, 某些页面是必须用户登录成功才能进行进入;如果用户没有登录成功,那么直接跳转到登录页面;)// 定义一个高阶组件, 用于鉴权的操作
function loginAuth(WrapperCpn) {
return props => {
// 从本地存储中获取token, token有值表示已登录, 没有值表示未登录
const token = localStorage.getItem("token")
if(token) {
return <WrapperCpn {...props}/>
} else {
return请先登录, 再跳转到对应的页面中
}
}
}
const Cart = loginAuth(function() {
return
购物车页面
})
export class App extends PureComponent {
render() {
return (
)
}
}
3 使用场景( props增强)
// 定义一个高阶组件, 对传入的组件进行props增强
function enhancedProps(WrapperCpn) {
class NewComponent extends PureComponent {
constructor() {
super()
this.state = {
userInfo: {
name: "chenyq",
age: 18
}
}
}
render() {
// 如果组件本身也有传递参数, 也需要将参数添加进来
return <WrapperCpn {...this.props} {...this.state.userInfo}/>
}
}
return NewComponent
}
// 调用高阶组件, 对组件进行props增强
const Home = enhancedProps(function(props) {
return
{props.name}-{props.age}
})
const About = enhancedProps(function(props) {
return
{props.name}-{props.age}-{props.names}
})
export class App extends PureComponent {
render() {
return (
{/* 展示增强后的组件 /}
{/
<About names={["aaa", "bbb", "ccc"]}/>
)
}
}
参考文献: https://blog.csdn.net/m0_71485750/article/details/126694889
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!