2016-06-01 9 views
2

Я следил за документацией, найденной в https://github.com/reactjs/react-router/blob/cbdc49442aba5cc6f225ff5546ac5f4a217fa4ec/upgrade-guides/v2.4.0.md, но я изо всех сил пытаюсь получить доступ к this.props.router, используя новый компонент с более высоким заказом.response-router - withRouter приводит к тому, что this.props.router не определено

import React from 'react'; 
import {connect} from 'react-redux'; 
import {withRouter} from 'react-router'; 
import * as actionCreators from '../action_creators'; 

export const ComponentA = withRouter(React.createClass({ 
    componentDidMount() { 
    console.log(this.props.router); //returns undefined 
    }, 
    render() { 
    return (
     <div></div> 
    ); 
    } 
})); 

//map redux state to props 
function mapStateToProps(state) { 
    return { 
    views: state.main.get('views') 
    }; 
} 

export const ComponentAContainer = connect(
    mapStateToProps, 
    actionCreators 
)(ComponentA); 

К сожалению, this.props.router всегда возвращает неопределенные значения. По какой-то причине он, похоже, не вводится в качестве свойства.

this.props выглядит следующим образом:

addBranch: function() 
addProject: function() 
addView: function() 
castDeviceAvailable: function() 
castDeviceConnected: function() 
castDeviceDisconnected: function() 
castDeviceUnavailable: function() 
closeBurgerMenu: function() 
createProject: function() 
deleteBranch: function() 
deleteProject: function() 
deleteView: function() 
formValidation: function() 
getCastDeviceAuthToken: function() 
key: function(...) 
get key: function() 
loadView: function() 
navigateToSettings: function() 
newBuild: function() 
newBuildSummary: function() 
newCastDeviceAuthToken: function() 
openBurgerMenu: function() 
projectAdded: function() 
projectDeleted: function() 
projectUpdated: function() 
ref: function(...) 
get ref: function() 
router: undefined 
setBuildSummary: function() 
setLatestBuilds: function() 
setProjects: function() 
setState: function() 
setThemes: function() 
setViews: function() 
subscribeToView: function() 
toggleBurgerMenu: function() 
updateView: function() 
viewAdded: function() 
viewDeleted: function() 
viewUpdated: function() 
__proto__: Object 

Любые мысли?

ответ

1

Вместо этого вы попробовали обернуть connect? Как это ...

export const ComponentAContainer = withRouter(connect(
    mapStateToProps, 
    actionCreators 
)(ComponentA)); 

Примечание: При этом вы должны также удалить withRouter оболочку на вашем определении класса.

Смежные вопросы