高阶组件是重用组件逻辑的高级方法。基本上,这是从React的构图本质中衍生出来的一种模式。 HOC是自定义的组件,它包含了另一个组件。他们可以接受任何动态提供的子组件,但不会修改或复制其输入组件中的任何行为。你可以说HOC是“纯”的组件
// wrapWithLoadData.js (HoC 高阶组件)
import React, {} from 'react'
export default (WrappedComponent, name) => {
class NewComponent extends Component {
constructor () {
super()
this.state = {data: null}
}
componentWillMount () {
let data = localStorage.getItem(name) //从localStorage 拿本地缓存数据
this.setState({ data })
}
render() {
return <WrappedComponent data={this.state.data} />
}
}
return NewComponent
}
//InputWithUserName .js
import wrapWithLoadData from './wrapWithLoadData'
class InputWithUserName extends Component {
render () {
return <input value={this.props.data} />
}
}
InputWithUserName = wrapWithLoadData(InputWithUserName, 'username')
export default InputWithUserName