Javascript 高阶组件可以';t访问包装组件';s默认道具
我有一个类似这样的想法:Javascript 高阶组件可以';t访问包装组件';s默认道具,javascript,node.js,reactjs,web,react-router,Javascript,Node.js,Reactjs,Web,React Router,我有一个类似这样的想法: export default function HOC(WrappedComponent) { return class extends Component { static propTypes = { i: PropTypes.number.isRequired }; render() { console.log(this.props); return <WrappedComponent {
export default function HOC(WrappedComponent) {
return class extends Component {
static propTypes = {
i: PropTypes.number.isRequired
};
render() {
console.log(this.props);
return <WrappedComponent
{...this.props}/>;
}
};
}
导出默认函数HOC(WrappedComponent){
返回类扩展组件{
静态类型={
i:PropTypes.number.isRequired
};
render(){
console.log(this.props);
返回;
}
};
}
我的包装组件如下所示:
WrappedComponent extends Component {
static defaultProps = {
i: 0
};
render() {
return <div/>;
}
};
export default HOC(WrappedComponent);
WrappedComponent扩展组件{
静态defaultProps={
i:0
};
render(){
返回;
}
};
导出默认HOC(WrappedComponent);
在HOC中的my console.log中,未定义i。但是,由其父级传递到WrappedComponent的道具是在HOC中定义的。如何解决此问题?这是基于官方文件的示例:
class.com组件{
render(){
返回({this.props.DefaultPropaseTreFeature});
}
};
函数createHOCWithExtraFeatures(WrappedComponent){
返回类扩展了React.Component{
静态defaultProps={
defaultPropAsExtreFeature:“您可以在HOC上看到我”
};
render(){
返回;
}
};
}
const ExtendedHoc=createHOCWithExtraFeatures(HOC);
ReactDOM.render(
,
document.getElementById('root'))
);代码>
您是否尝试过这样做:类HOC扩展WrappedComponent
?@YUzhva我很确定这违反了React约定您使用的是哪一版本的React?请注意,您错过了WrappedComponent
之前的类
。它应该是这样的:class WrappedComponent扩展组件{}