2017-09-29 1 views
0

J'utilise la fonction react-redux connect avec la fonction withRouter, et j'essaie également d'utiliser compose() ici. Voici le code:withRouter, connect() et reac-composer

export default compose (
    withRouter, 
    connect(mapStateToProps) 
)(Dashboard); 

Mais je reçois l'erreur suivante:

Uncaught TypeError: Converting circular structure to JSON 
    at Object.stringify (<anonymous>) 
    at wrapWithConnect (connectAdvanced.js:84) 
    at applyFunctor (index.js:124) 
    at index.js:144 
    at Array.reduce (<anonymous>) 
    at ComposedComponent (index.js:143) 
    at ReactCompositeComponent.js:305 
    at measureLifeCyclePerf (ReactCompositeComponent.js:75) 
    at ReactCompositeComponentWrapper._constructComponentWithoutOwner (ReactCompositeComponent.js:304) 
    at ReactCompositeComponentWrapper._constructComponent (ReactCompositeComponent.js:279) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:187) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:236) 
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:703) 
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:522) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactDOMComponent.mountChildren (ReactMultiChild.js:236) 
    at ReactDOMComponent._createInitialChildren (ReactDOMComponent.js:703) 
    at ReactDOMComponent.mountComponent (ReactDOMComponent.js:522) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:370) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:257) 
    at Object.mountComponent (ReactReconciler.js:45) 
    at mountComponentIntoNode (ReactMount.js:104) 
    at ReactReconcileTransaction.perform (Transaction.js:143) 
    at batchedMountComponentIntoNode (ReactMount.js:126) 
    at ReactDefaultBatchingStrategyTransaction.perform (Transaction.js:143) 
    at Object.batchedUpdates (ReactDefaultBatchingStrategy.js:62) 
    at Object.batchedUpdates (ReactUpdates.js:97) 
    at Object._renderNewRootComponent (ReactMount.js:319) 
    at Object._renderSubtreeIntoContainer (ReactMount.js:401) 
    at Object.render (ReactMount.js:422) 

Quel est le problème ici?

Répondre

0

connect renvoie une fonction qui prend le composant. Donc, je pense que cela fonctionnerait si vous changez légèrement votre parens:

export default compose(
    withRouter, 
    connect(mapStateToProps)(Dashboard) 
); 

Ou:

export default connect(mapStateToProps)(compose(
    withRouter, 
    Dashboard 
);