来吧,展示。
react高阶组件怎么用呢
首先我们要明白一个道理,
react高阶组件并不是react api
它是基于react组合特性,形成的设计模式。
组件就是将props转为ui,hoc就是将组件转换为组件。
下面直接展示代码。
//创建一个高阶组件
function withMouse(WrappedComponent) {
//该组件提供复用的状态逻辑
class Mouse extends React.Component {
//鼠标状态
state = {
x:0,
y:0
}
handleMouseMove = e => {
this.setState({
x:e.clientX,
y:e.clientY
})
}
//控制鼠标状态逻辑
componentDidMount () {
window.addEventListener('mousemove',this.handleMouseMove)
}
componentWillUnmount () {
window.removeEventListener("mousemove",this.handleMouseMove)
}
render () {
return <WrappedComponent {...this.state} />
}
}
return Mouse
}
// 调用高阶组件来增强猫捉老鼠的组件:
const MouseCat = withMouse (Cat) ;
渲染组件里面调用MouseCat
<MouseCat />
props丢失问题?
高阶组件没有往下传props。导致props丢失。
解决方案:
将state和props一起传递给组件。
高阶组件说白了就是组件加强。
一个组件变为一个加强的组件。
高阶组件组件嵌套。props丢失。直接将state和props一起传递给组件就行。