2016-04-05 2 views
4

Я пытаюсь сделать очень простую вещь с помощью маршрутизатора. Но я продолжаю ошибаться - «не могу прочитать свойство« push »неопределенного». Это происходит, когда я нажимаю на тестовую ссылку.Не могу прочитать свойство «push» undefined

import { Router, useRouterHistory, Route } from 'react-router'; 
import { createHashHistory } from 'history'; 
const appHistory = useRouterHistory(createHashHistory)({ queryKey: false }); 

ReactDOM.render(React.createElement(nav), document.getElementById('navComponent')); 

ReactDOM.render((
    <Router history={appHistory}> 
     <Route path="test" component={Test}/> 
    </Router> 
), document.getElementById('mainContainer')); 

нав Компонент

render() { 
     return (
      <div> 
       <ul> 
       <li><Link to="/test"> Test </Link></li> 
       </ul>  
      </div> 
     ); 
    }; 

Test Component

render() { 
     return (
      <div> 
       Hello World! 
      </div> 
     ); 
    }; 

Может кто-то пожалуйста, помогите мне? здесь застряли.

Update 1

толчок является частью среагировать-маршрутизатор

this.context.router.push(_location); 

Package.json

{ 

    "author": "", 
    "license": "ISC", 
    "devDependencies": { 
    "gulp": "^3.9.0", 
    "gulp-sass": "^2.1.1", 
    "gulp-util": "^3.0.7", 
    "imports-loader": "0.6.4", 
    "istanbul-instrumenter-loader": "0.1.3", 
    "jasmine": "2.3.2", 
    "jasmine-core": "2.3.4", 
    "jquery": "1.11.3", 
    "moment": "2.10.6", 
    "react": "0.14.2", 
    "react-addons-test-utils": "0.14.2", 
    "react-dom": "0.14.2", 
    "redux": "3.0.3", 
    "rewire": "2.5.1", 
    "rewire-webpack": "1.0.1", 
    "run-sequence": "^1.1.5", 
    "style-loader": "0.12.4", 
    "underscore": "1.8.3", 
    "webpack-stream": "^3.1.0" 
    }, 
    "dependencies": { 
    "react-router": "^2.0.0", 
    } 
} 

Update 2 Извините за не ясно, с моим вопросом, я обновил мой вопрос надеюсь, что теперь имеет смысл.

+0

предоставить код, включая 'push' пожалуйста ... – iplus26

+0

Можете ли вы предоставить' package.json' информацию или какие модули вы установили ? –

+0

@ iplus26 см. Обновленный вопрос – GeekOnGadgets

ответ

0

Это wo rks как следующий. Пожалуйста, сравните ваше решение. В основном верхний маршрут должен иметь путь, «/» для детей «/» не требуется

<Router history={appHistory}> 
     <Route path="/" component={Main}> 
      <Route path="test" component={Test}/> 
      <Route path="*" component={Test}/> 
     </Route> 
</Router> 

const Main = ({children, history}) => { 
return (
<div> 
<nav> 
     <div history={history}/> 
     </nav> 
     <div> 
     {children} 
     </div> 
</div> 
) 
} 
Смежные вопросы