【问题标题】:After adding browser-router, I am getting warning添加浏览器路由器后,我收到警告
【发布时间】:2019-10-20 06:19:31
【问题描述】:

尝试使用create-react-app 创建 ReactNav,就在添加 browserRouter 后的第二个,我收到警告:

元素类型无效:应为字符串(用于内置组件) 或类/函数(用于复合组件)但得到:对象。你 可能忘记从定义它的文件中导出您的组件, 或者您可能混淆了默认导入和命名导入。

检查Context.Consumer的渲染方法。

Module../src/index.js
src/index.js:7
   4 | import App from "./App";
   5 | import "./index.css";
   6 | 
>  7 | ReactDOM.render(
   8 |   <BrowserRouter>
   9 |     <App />
  10 |   </BrowserRouter>,

这是我的 app.js

import React, { Component } from "react";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import logo from "./logo.svg";
import "bootstrap/dist/css/bootstrap.css";
import Nav from "./components/nav/nav";
import Home from "./components/home/home";
import About from "./components/about/about";
import Contact from "./components/contact/contact";

class App extends Component {
  render() {
    return (
      <Router>
        <div className="App">
          <Nav />
          <div className="container">
            <Switch>
              <Route exact path="/" component={Home} />
              <Route path="/contact" component={Contact} />
              <Route path="/about" component={About} />
            </Switch>
          </div>
        </div>
      </Router>
    );
  }
}

export default App;

这是我的 index.js

import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter } from "react-router-dom";
import App from "./App";
import "./index.css";

ReactDOM.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById("root")
);

还有我的 package.json

{
  "name": "jardinteresa",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^4.3.1",
    "react": "^16.10.2",
    "react-dom": "^16.10.2",
    "react-router-dom": "^5.1.2",
    "react-scripts": "^3.2.0"
  },
  "devDependencies": {},
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

【问题讨论】:

  • 你用的是两次BrowserRouter为什么?
  • 检查我发布了改进的代码stackoverflow.com/a/58470552/6544460
  • @VahidAkhtar 是的,这就是问题所在,复制粘贴问题。谢谢!
  • 如果对你有帮助,请给stackoverflow.com/a/58470552/6544460投票
  • @VahidAkhtar Thanks for the feedback! Votes cast by those with less than 15 reputation are recorded, but do not change the publicly displayed post score.

标签: javascript reactjs react-router react-router-dom


【解决方案1】:
ReactDOM.render(<App />, )

使用这个只是因为你使用了 2 次 BrowserRouter。

class App extends Component {
  render() {
    return (
      <Router>
        <div className="App">
          <Nav />
          <div className="container">
            <Switch>
              <Route exact path="/" component={Home} />
              <Route path="/contact" component={Contact} />
              <Route path="/about" component={About} />
            </Switch>
          </div>
        </div>
      </Router>
    );
  }
}

中删除 BrowserRouter
import App from "./App";

import "./index.css";

ReactDOM.render(<App /> ,)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2022-11-29
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2019-09-21
    • 1970-01-01
    相关资源
    最近更新 更多