# 高阶组件
高阶组件是参数为组件,返回值为新组件的函数。
const EnhancedComponent = higherOrderComponent(WrappedComponent);
// 3. 需要使用公共逻辑的组件
const App = (props) => {
const {x, y} = props.mouse;
return (
<div>
<h1>The mouse position is ({x}, {y})</h1>
</div>
);
}
// 1. 具有公共逻辑的 withMouse
const withMouse = (Component) => {
return class withMouse extends React.Componet {
constructor(props){
super(props);
this.state = {x:0,y:0};
}
handleMouseMove = (event)=>{
this.setState({
x: event.clientX,
y: event.clientY
});
}
render() {
return (
<div onMouseMove={this.handleMouseMove}>
{/* 2. 透传所有 props 以及 额外的 mouse 属性 */}
<Component {...this.props} mouse={this.state}>
</div>
);
}
}
}
export default withMouse(App);
# 实际应用
react-redux 中的 connect 函数
export default connect(mapStateToPorps, mapDispatchToProps)(App);
← 12-性能优化.md 14-1-组合.md →