Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript react路由器v^4.0.0未捕获类型错误:无法读取属性';地点';未定义的_Javascript_Json_Reactjs_React Router - Fatal编程技术网

Javascript react路由器v^4.0.0未捕获类型错误:无法读取属性';地点';未定义的

Javascript react路由器v^4.0.0未捕获类型错误:无法读取属性';地点';未定义的,javascript,json,reactjs,react-router,Javascript,Json,Reactjs,React Router,我使用react路由器时遇到一些问题(我使用的是^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( <Rou

我使用react路由器时遇到一些问题(我使用的是^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(
  <Router history={browserHistory} >
    <Route path="/" component={App} />

  </Router>,
  document.getElementById('root')
);
这就是我检查控制台日志时发生的情况

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"
  }
}
我已经在其他地方检查过了,但我没有找到解决办法


非常感谢你们的耐心和帮助

你做错了几件事

  • 首先,browserHistory在V4中不是一个东西,所以您可以删除它

  • 其次,您要从
    react-router
    导入所有内容,它应该是
    react-router-dom

  • 第三,
    react router dom
    不导出
    router
    ,而是导出
    BrowserRouter
    ,因此需要
    从'react router dom
    导入{BrowserRouter as router}


  • 看起来您刚刚使用了V3应用程序,并希望它能与v4一起使用,这不是一个好主意。

    我尝试了这里建议的所有方法,但都不适用于我。所以,如果我能帮助任何人解决类似的问题,我检查过的每一个教程都不会更新到第4版

    以下是我为让它工作所做的

    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'));
    
    从“React”导入React;
    从“./App”导入应用程序;
    从“react dom”导入react dom;
    进口{
    哈希路由器,
    路线
    }从“反应路由器dom”;
    ReactDOM.render((
    }/>
    ),document.getElementById('root');
    
    这是我唯一能让它在没有任何错误或警告的情况下工作的方法

    如果您想为我将道具传递给您的组件,最简单的方法是:

     <Route path="/" render={()=><App items={temasArray}/>}/>
    
    }/>
    
    更换

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

    它将开始工作。
    这是因为react router dom导出BrowserRouter(如果需要,请使用此代码)

    从“/routes”导入{useRoutes};
    从“react Router dom”导入{BrowserRouter as Router};
    导出常量应用=()=>{
    const routes=useRoutes(true);
    返回(
    {routes}
    );
    };
    ///routes.js
    从“react router dom”导入{交换机、路由、重定向};
    导出常量用户路由=(已验证)=>{
    如果(未经验证){
    返回(
    );
    }
    返回(
    );
    };
    

    如果你已经在appBar上安装了
    useStyles
    ,你可以添加你想要的样式。

    就是这样,哈哈。我在Udemy学习一门课程,它使用V3。我试过了,没用。我查找了一些在V4中使用它的方法,但我所能找到的只是人们告诉我如何评分。我就是这样来到这里的。无论如何,非常感谢你的帮助。我真的很感激:DHey Tyler,你有相同的示例代码吗?在遵循这些步骤之后,我在4.1.1中的react router中出现了相同的错误。我需要自己创建一个历史对象吗?谢谢!通过阅读您的答案,我发现由于react路由器版本,我出现了错误。因为我找不到v4的好文档,所以我决定降级到V3,然后它开始为我工作wanted@TylerMcGinnis“react router dom不导出路由器”react router dom正在抛出此警告,提示使用
    路由器
    。我有一个类似的设置,但在我的登录页上,我的第一个组件没有单击菜单链接就出现了。我将发布一个问题,谢谢react router dom替换react router,还是您需要同时安装这两个?只保留react router domhi,考虑添加一些有关代码的信息,解释您所做的操作。我使用文件夹中的router,您可以在App.js中的导入中看到名称routes,如果我已验证(),我将使用此代码验证。我传授的功能是使用路由器for App.jsedit you answer,让阅读它的用户对情况和解决方案有一个完整的了解
    import { Router, Route, Link, browserHistory } from 'react-router';
    
    import { BrowserRouter as Router, Route } from 'react-router-dom';
    
    import { useRoutes } from "./routes";
    
    import { BrowserRouter as Router } from "react-router-dom";
    
    export const App = () => {
    
    const routes = useRoutes(true);
    
      return (
    
        <Router>
    
          <div className="container">{routes}</div>
    
        </Router>
    
      );
    
    };
    
    // ./routes.js 
    
    import { Switch, Route, Redirect } from "react-router-dom";
    
    export const useRoutes = (isAuthenticated) => {
      if (isAuthenticated) {
        return (
          <Switch>
            <Route path="/links" exact>
              <LinksPage />
            </Route>
            <Route path="/create" exact>
              <CreatePage />
            </Route>
            <Route path="/detail/:id">
              <DetailPage />
            </Route>
            <Redirect path="/create" />
          </Switch>
        );
      }
      return (
        <Switch>
          <Route path={"/"} exact>
            <AuthPage />
          </Route>
          <Redirect path={"/"} />
        </Switch>
      );
    };
    
       appBar: {
        transition: theme.transitions.create(['margin', 'width'], {
          easing: theme.transitions.easing.sharp,
          duration: theme.transitions.duration.leavingScreen
        }),
        backgroundColor: '#fff' // add the styles here
      }