当前位置: 首页 > 面试题库 >

不变式失败:您不应使用 外

丁翰海
2023-03-14
问题内容

react-router-domReact应用程序中使用路由。我的应用程序的一部分提取到另一个软件包中。依赖项列表如下所示:

./app/dashboard/package.json

{
  "dependencies": {
    "@app/components": "^1.0.0",
    "react": "^16.8.5",
    "react-dom": "^16.8.5",
    "react-router-dom": "^5.0.0"
  }
}

./app/components/package.json

{
  "peerDependencies": {
    "react-router-dom": "^5.0.0"
  }
}

当我使用@app/components需要组件的组件时,react-router-dom出现以下错误:

Uncaught Error: Invariant failed: You should not use <Route> outside a <Router> 
The above error occurred in the <Context.Consumer> component:
Uncaught (in promise) Error: Invariant failed: You should not use <Route> outside a <Router>

为什么会引发此错误?在App.js我用BrowserRouter

import React, { Suspense } from 'react';
import { Switch, Route } from 'react-router-dom';
import { Placeholder } from '@app/components';

const Auth = React.lazy(() => import(/* webpackPrefetch: true */ './pages/Auth'));
const Index = React.lazy(() => import(/* webpackPrefetch: true */ './pages/Index'));

const App = () => (
  <Suspense fallback={<Placeholder />}>
    <Switch>
      <Route path="/auth" component={Auth} />
      <Route path="/" component={Index} />
    </Switch>
  </Suspense>
);

export default App;

client.jsx

import React from 'react';
import { render } from 'react-dom';
import { BrowserRouter } from 'react-router-dom';

import App from './App';

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

问题答案:

有2个React实例的麻烦



 类似资料:
  • 问题内容: 我正在尝试在示例应用程序中设置react-router,但出现以下错误: 我的应用程序设置如下: 父组件 子/ 组件 知道我在做什么错吗? 这是一个沙盒链接来演示该问题。 问题答案: 我假设您使用的是React-Router V4,就像您在原始Sandbox Link中 使用的一样。 您呈现在调用组件用来渲染和主要成分是外面,这就是为什么它被抛出的错误: 您不应在 外使用 变化 : 使

  • 我使用LiquiBase3.4.1和MySQL56并通过spring boot运行Liquibase。 我有一个变更集,其中包括向现有表中添加一列。新的具有属性,并带有一个简单的select。 当我在该选择中出错时,变更集失败,迁移在该变更集停止。然而,新列被提交到数据库,但没有正确的值,而且,最糟糕的是,这个变更集没有标记为run!下一次运行迁移时,Liquibase再次尝试执行变更集,但失败了

  • 问题内容: 我不断得到… 我的root-context.xml是… 我从pom.xml使用的Spring版本是… 由此看来,由于架构> 3.0以及spring和spring安全架构,我似乎无法得出问题所在,有人有什么想法吗? 谢谢, 大卫 问题答案: 您指向的模式是spring-security-3.1.xsd,但pom.xml声明了spring-security- config-3.0.1.RE

  • 对于一个复数对象,有些条件我们期望是真的。 举例来说,如果笛卡尔坐标系的标志量被设置了,那么我们就期望real和imag的值是有效的,类似地,如果极坐标系的标志量被设置了,我们期望mag和theta也是有效的。最后,如果两个标志位都设置了的话,我们希望四个值是一致的,即他们应该是以不同的表示方式表示相同的一个复数。 这样的条件即为不变式,由于很显而易见的原因他们是不变的——他们总是应该为真。编写几

  • 我有一个应用程序,其中包括一个wear应用程序。在用真实设备进行调试测试时,所有这些都可以正常工作。我还可以创建释放apk,将磨损apk包在里面。但前提是我的申请只有一种口味。 我想用不同的applicationId维护应用程序的两个版本,但尽管编译时没有错误,但在本例中,两个版本的APK(每种风格一个)并不包含相应的磨损APK。 这是移动应用程序build.gradle的相关部分: 这是相应的w