概念
高阶组件(HOC)是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。
- 具体而言,高阶组件是参数为组件,返回值为新组件的函数。
- 组件是将 props 转换为 UI,而高阶组件是将组件转换为另一个组件。
- HOC 在 React 的第三方库中很常见,例如 Redux 的 connect 和 Relay 的 createFragmentContainer。
举例说明
常用userInfo的数据全局共享
import React, { Component } from 'react'
const WithStorage = WrappedComponent => {
return class extends Component {
state = {
user: {}
}
componentWillMount() {
let user = JSON.parse(localStorage.getItem( 'userInfo' ) as string) || {}
this.setState( { user } )
}
render() {
return <WrappedComponent user={ this.state.user } { ...this.props } />
}
}
}
export default WithStorage
其他组件要想使用userinfo的数据,可通过
import React from "react";
import WithStorage from '@/utils/WithStorage'
const DynamicFieldSet = (props) => {
const { innerName, user} = props;
console.log(props) //获取得到userInfo的数据
return <>{...props}</>
}
export default WithStorage(DynamicFieldSet)