[英]Access prop outside of class in React when calling Higher Order Component
[英]How would I access a method/function from a HOC (Higher Order Component) in React without passing it as a prop?
我有一个高阶组件。 我可以从HOC继承props
到Wrapped Component中,但是我也想继承它的方法/函数。 做这个的最好方式是什么。
我想使用this.myHocFunc
,而不是this.props.myHocFunc
。 我也不想将this.myHocFunc
映射到Wrapped Component内部的this.props.myHocFunc
。 所有逻辑需要理想地发生在HOC组件内
这是我的HOC组件:
import React, { Component } from "React";
export var MyEnhance = ComposedComponent => class extends Component {
constructor() {
super();
}
myHocFunc(text) {
// text should be 'hello world'
console.log(text);
}
componentDidMount() {
}
render() {
return <ComposedComponent {...this.props} />;
}
};
这是我包装的组件:
import React from 'react';
import ReactDOM from 'react-dom';
import { MyEnhance } from "./enhance";
@MyEnhance
class MyComponent extends React.Component {
render() {
return <button onClick={this.myHocFunc('hello world')}</div>;
}
};
ReactDOM.render(<MyComponent />, document.getElementById('root'));
提前致谢
这似乎是一项继承工作,例如
class MyEnhancedComponent extends React.Component {
myHocFunc(text) {
console.log(text);
}
}
class MyComponent extends MyEnhancedComponent {
render() {
return <button onClick={() => this.myHocFunc('hello world')}</div>;
}
}
我不确定您对MyEnhance的其他要求是什么,但是您可能使事情变得过于复杂。 否则,您也可以显式添加该功能。
export var MyEnhance = ComposedComponent => class extends Component {
// ...
enhance(instance) {
instance.myHocFunc = this.myHocFunc.bind(instance);
}
render() {
return this.enhance(<ComposedComponent {...this.props} />);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.