为什么 Context 没有传递给我的 HOC
Why is Context not being passed to my HOC
我有一个组件正在使用 HOC。 HOC 需要 this.context 但由于某些原因 this.context 没有被通过。我究竟做错了什么?泰
组件:
import React, { Component } from 'react';
import withTracking from './hocs/withTracking';
class NamePage extends Component {
componentDidMount() {
console.log(this.context.mixpanel) // WORKS
}
render() {
return (
...
);
}
}
NamePage.contextTypes = {
mixpanel: PropTypes.object.isRequired
};
export default withTracking('View Page: NamePage')(NamePage);
hoc
import { lifecycle } from 'recompose';
export function withTracking(eventTitle) {
return lifecycle({
componentDidMount() {
console.log(this.context.mixpanel) // UNDEFINED - fail-y?
}
});
}
export default withTracking;
console.log 返回 undefined
如果我在组件中输出,它 returns 是正确的。
我做错了什么?谢谢
ContextTypes
仅为 NamePage
组件指定,为了让您将它与 HOC 一起使用,您需要在 wrappedComponent 实例上指定它
const WrappedNamePage = withTracking('View Page: NamePage')(NamePage);
WrappedNamePage.contextTypes = {
mixpanel: PropTypes.object.isRequired
};
export default WrappedNamePage
我有一个组件正在使用 HOC。 HOC 需要 this.context 但由于某些原因 this.context 没有被通过。我究竟做错了什么?泰
组件:
import React, { Component } from 'react';
import withTracking from './hocs/withTracking';
class NamePage extends Component {
componentDidMount() {
console.log(this.context.mixpanel) // WORKS
}
render() {
return (
...
);
}
}
NamePage.contextTypes = {
mixpanel: PropTypes.object.isRequired
};
export default withTracking('View Page: NamePage')(NamePage);
hoc
import { lifecycle } from 'recompose';
export function withTracking(eventTitle) {
return lifecycle({
componentDidMount() {
console.log(this.context.mixpanel) // UNDEFINED - fail-y?
}
});
}
export default withTracking;
console.log 返回 undefined
如果我在组件中输出,它 returns 是正确的。
我做错了什么?谢谢
ContextTypes
仅为 NamePage
组件指定,为了让您将它与 HOC 一起使用,您需要在 wrappedComponent 实例上指定它
const WrappedNamePage = withTracking('View Page: NamePage')(NamePage);
WrappedNamePage.contextTypes = {
mixpanel: PropTypes.object.isRequired
};
export default WrappedNamePage