2017-03-19 35 views
13

Tepki yönlendiricisiyle ilgili bir sorun yaşıyorum (^ 4.0.0 sürümünü kullanıyorum).yönlendiriciyi yanıtla v^4.0.0 Yakalanmamış TypeError: Özellik 'unite edilemeyen' konumunun 'okunamıyor

bu benim index.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import App from './App'; 
import './index.css'; 
import { Router, Route, Link, browserHistory } from 'react-router'; 


ReactDOM.render(
    <Router history={browserHistory} > 
    <Route path="/" component={App} /> 

    </Router>, 
    document.getElementById('root') 
); 

App.js sadece bir şey olduğunu. o sorun değil çünkü ben

import React, { Component } from 'react'; 
import logo from './logo.svg'; 
import './App.css'; 

class App extends Component { 
    render() { 
    return (
     <div className="App"> 
     <div className="App-header"> 
      <img src={logo} className="App-logo" alt="logo" /> 
      <h2>Welcome to React</h2> 
     </div> 
     <p className="App-intro"> 
      To get started, edit <code>src/App.js</code> and save to reload. 
     </p> 
     </div> 
    ); 
    } 
} 

export default App; 

(inanıyorum), burada temel bir post ediyorum ve bu i konsol günlüğünü

Router.js:43 Uncaught TypeError: Cannot read property 'location' of undefined 
    at new Router (Router.js:43) 
    at ReactCompositeComponent.js:295 
    at measureLifeCyclePerf (ReactCompositeComponent.js:75) 
    at ReactCompositeComponentWrapper._constructComponentWithoutOwner (ReactCompositeComponent.js:294) 
    at ReactCompositeComponentWrapper._constructComponent (ReactCompositeComponent.js:280) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:188) 
    at Object.mountComponent (ReactReconciler.js:46) 
    at ReactCompositeComponentWrapper.performInitialMount (ReactCompositeComponent.js:371) 
    at ReactCompositeComponentWrapper.mountComponent (ReactCompositeComponent.js:258) 
    at Object.mountComponent (ReactReconciler.js:46) 

ah kontrol ne olur, ve bu pakettir .json ihtimale

{ 
    "name": "teste2", 
    "version": "0.1.0", 
    "private": true, 
    "dependencies": { 
    "react": "^15.4.2", 
    "react-dom": "^15.4.2", 
    "react-router": "^4.0.0" 
    }, 
    "devDependencies": { 
    "react-scripts": "0.9.5" 
    }, 
    "scripts": { 
    "start": "react-scripts start", 
    "build": "react-scripts build", 
    "test": "react-scripts test --env=jsdom", 
    "eject": "react-scripts eject" 
    } 
} 

i başka yerlerde bunun kontrolünü oldum ama bunu çözmek için bir yol bulamadık.

Sabrınız ve yardımınız için çok teşekkür ederim!

cevap

33

Bazı şeyleri yanlış yapıyorsunuz. İlk olarak, tarayıcıHistory V4'te bir şey değildir, bu yüzden bunu kaldırabilirsiniz. İkincisi, react-router'dan her şeyi içe aktarıyorsunuz, react-router-dom olmalıdır. Üçüncü olarak, react-router-dom bir Router dışa aktarmaz, BrowserRouter dışa aktarır, böylece import { BrowserRouter as Router } from 'react-router-dom'a ihtiyacınız vardır. V3 uygulamanızı aldığınız ve v4 ile çalışmasını beklediğiniz anlaşılıyor, bu harika bir fikir değil.

+1

haha. Udemy'de bir dersten öğrendim ve V3 kullandı. Bunu denedim, işe yaramadı. Onu V4'te kullanmam için bir yol aradım ama bulabildiğim her şey bana insanları anımsatmaktı. işte böyle bitti. Her neyse, yardımın için çok teşekkür ederim. Gerçekten takdir ediyorum: D –

+0

Endişeye gerek yok. Öğrenmenin en iyi yolu bunu denemek, böylece seni suçlamıyorum. İyi şanslar! –

+0

Ne yazık ki, github depolarındaki belgeler ve örnekler güncel değil. PS: @Lucasfersa cevabınız sorununuzu çözerse bunu kabul etmeyi unutma :-) –

0

Burada önerilen herşeyi denedim ama benim için çalışmadı. durumda ben benzer bir sorun olan herkesin yardımcı olabilir Yani, kontrol ettim her öğretici sürümü İşte 4.

ile çalışmak için güncelleştirilmiş Ben çalışması için ne yaptık olduğunu

import React from 'react'; 
import App from './App'; 

import ReactDOM from 'react-dom'; 
import { 
    HashRouter, 
    Route 
} from 'react-router-dom'; 


ReactDOM.render((
     <HashRouter> 
      <div> 
       <Route path="/" render={()=><App items={temasArray}/>}/> 
      </div> 
     </HashRouter > 
    ), document.getElementById('root')); 

Bu, herhangi bir hata veya uyarı olmadan çalışmayı başarmanın tek yoludur. Benim için bileşenin en kolay yolu sahne geçmek istiyorum durumda

bu biridir:

tür durum
<Route path="/" render={()=><App items={temasArray}/>}/>