2017-12-23 1 views
1

Ich habe eine Komponente, die eine HOC verwendet. Die HOC benötigt diesen.Kontext, aber aus irgendeinem Grund wird dieser.Kontext nicht übergeben. Was mache ich falsch? tyWarum wird der Kontext nicht an mein HOC übergeben

Komponente:

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; 

Die console.log undefined zurückkehrt, wo es, wenn ich Ausgang in der Komponente korrekt zurückgibt.

Was mache ich falsch? Dank

Antwort

1

ContextTypes wird nur für die NamePage Komponente, angegeben, um für Sie es mit dem HOC verwenden Sie es auf der wrappedComponent Instanz

const WrappedNamePage = withTracking('View Page: NamePage')(NamePage); 

WrappedNamePage.contextTypes = { 
    mixpanel: PropTypes.object.isRequired 
}; 

export default WrappedNamePage 
angeben müssen
Verwandte Themen