react router v^4.0.0 Uncaught TypeError: Cannot read property 'location' of undefined react router v^4.0.0 报错:无法读取未定义的属性 'location'。

45 浏览
0 Comments

react router v^4.0.0 Uncaught TypeError: Cannot read property 'location' of undefined react router v^4.0.0 报错:无法读取未定义的属性 'location'。

我在使用react router(版本^4.0.0)时遇到了一些问题。这是我的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(
  
    
  ,
  document.getElementById('root')
);

App.js只是任意内容。我在这里贴出基本内容,因为我认为这不是问题所在:

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
class App extends Component {
  render() {
    return (
          logo
          

Welcome to React

To get started, edit [apcode]

src/App.js

and save to reload.

);

}

}

export default App;

[/apcode]

当我检查控制台日志时发生了什么:

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)

噢,这是package.json文件,以防万一:

{
  "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"
  }
}

我在其他地方检查过,但是没有找到解决方法。非常感谢你们的耐心和帮助!

0
0 Comments

在使用react router v4.0.0时,可能会遇到"Uncaught TypeError: Cannot read property 'location' of undefined"的错误。这个错误出现的原因是因为教程和示例都没有更新到适配版本4。

解决这个问题的方法是引入正确的组件并正确设置路由。下面是一个示例代码:

import React from 'react';
import App from './App';
import ReactDOM from 'react-dom';
import {
    HashRouter,
    Route
} from 'react-router-dom';
ReactDOM.render((
    
        
}/>
), document.getElementById('root'));

以上是一个正确的设置路由的示例,可以解决"Uncaught TypeError: Cannot read property 'location' of undefined"的错误。如果需要向组件传递props,可以在Route组件中使用render属性:

}/>

以上方法是我自己尝试后发现的,可以正常运行而不会出现任何错误或警告。希望这个方法对遇到类似问题的人有所帮助。

0
0 Comments

问题原因是导入了错误的模块和组件,并且版本不兼容。解决方法是:

1. 删除browserHistory,因为在v4中已经不再使用该属性。

2. 将导入的模块从"react-router"改为"react-router-dom"。

3. 将Router组件从BrowserRouter中导入,即使用import { BrowserRouter as Router } from 'react-router-dom'

4. 如果使用的是v5版本的react-router,需要使用Router组件。

在这个问题中,问题出现的原因是导入了错误的模块和组件,并且在v4版本中使用了v3版本的代码。解决方法是根据错误提示修正导入的模块和组件,并确保版本兼容。如果遇到类似问题,可以参考以上解决方法进行修复。

0
0 Comments

最近在使用React Router v4.0.0时,遇到了一个错误提示“Uncaught TypeError: Cannot read property 'location' of undefined”。经过分析,我总结出了这个问题出现的原因以及解决方法。

在使用React Router v4.0.0时,我们会使用以下代码导入所需的组件和功能:

import { Router, Route, Link, browserHistory } from 'react-router';

然而,这个代码在新版本的React Router中已经过时了。为了解决这个问题,我们需要将上述代码替换为以下代码:

import { BrowserRouter as Router, Route } from 'react-router-dom';

这样,问题就会得到解决。那么为什么会出现这个问题呢?

出现这个问题的原因是因为react-router-dom模块导出了BrowserRouter组件,而不是像之前的版本那样导出Router组件。因此,我们需要使用BrowserRouter作为路由组件。

至于react-router-dom是否替换了react-router,答案是肯定的。我们只需要保留react-router-dom这个模块即可,不再需要安装react-router。

总结一下,如果我们在使用React Router v4.0.0时遇到了“Uncaught TypeError: Cannot read property 'location' of undefined”这个错误提示,我们只需要将旧的导入代码替换为新的代码即可。这是因为react-router-dom模块导出了BrowserRouter组件,而不再导出Router组件。希望这篇文章对你有所帮助!

0