【发布时间】:2019-01-19 09:24:55
【问题描述】:
我错误地编写了两个版本的 HOC 实现,但它不会给我带来任何错误并且按预期工作,所以我希望有人能够解释我的差异。 requireAuth 是高阶组件
首先我有一个组件如下
import requireAuth from 'somepath';
class App extends Component {
...
}
export default connect(null, actions)(requireAuth(App));
那么下面是我的requireAuth
import React, { Component } from 'react';
import { connect } from 'react-redux';
export default (ChildComponent) => {
class ComposedComponent extends Component {
...
render() {
return <ChildComponent {...this.props}/>;
}
}
function mapStatetoProps(state) {
return { someProp: state.someState };
}
return connect(mapStateToProps)(ComposedComponent);
};
下面是我错误的另一个版本,但没有错误,如果有任何差异,我正在寻找一些解释:
import requireAuth from 'somepath';
class App extends Component {
...
}
export default requireAuth(connect(null, actions)(App));//<<=== use requireAuth to surround the whole connect statement instead
下面是requireAuth:
import React, { Component } from 'react';
import { connect } from 'react-redux';
export default (ChildComponent) => {
class ComposedComponent extends Component {
...
render() {
return <ChildComponent />; //<<<======without {...this.props}
}
}
function mapStatetoProps(state) {
return { someProp: state.someState };
}
return connect(mapStateToProps)(ComposedComponent);
};
【问题讨论】:
标签: reactjs higher-order-components