首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用可加载组件错误响应路由器

使用可加载组件错误响应路由器
EN

Stack Overflow用户
提问于 2019-02-09 19:32:23
回答 3查看 4.3K关注 0票数 10

我创建了一个存储库,其中包含一个基本示例,该示例将触发此错误,以防有帮助:

可装载部件.ssr

我试图在react-router-dom 4.3.1loadable-component 5.6.0react-dom 16.8.1的基础上使用可加载的组件

下面是一个组件示例,我正在尝试将loadable-component应用于其中

代码语言:javascript
复制
import React from "react";

const About = () => <h2>About</h2>;

export default About;

App组件中导入如下所示:

代码语言:javascript
复制
import loadable from "@loadable/component";
...
const About = loadable(() => import("./About"));

并在同一个Route组件中作为支柱传递给App

代码语言:javascript
复制
<Route path="/about/" component={About} />

但是,我一直在Developer控制台中得到以下警告:

警告:错误的道具类型:无效的支柱component类型object提供给Route,预期function

如果我使用第一个答案中建议的替代语法

代码语言:javascript
复制
<Route path="/about/" component={props => <About {...props} />} />

警告消失,但当单击链接时,到/about的路由仍然会出现错误:

代码语言:javascript
复制
Uncaught Error: Loading chunk About failed.
(missing: http://localhost:3000/about/About.bundle.js)
    at HTMLScriptElement.onScriptComplete (VM1805 app.bundle.js:114)

我遵循了关于在SSR中设置文档loadable-components,所以我已经设置了客户机、服务器以及babel插件。

知道这是怎么回事吗?

EN

回答 3

Stack Overflow用户

发布于 2019-02-13 10:21:43

这是一个反应路由器的已知问题

我想你可以这样编码路线:

代码语言:javascript
复制
<Route path="/about/" component={props => <About {...props} />} />

注意这个实现,因为在重新呈现时您可能会有一些错误行为。

票数 4
EN

Stack Overflow用户

发布于 2020-08-02 01:43:11

这是您的“关于”组件:

代码语言:javascript
复制
import React from "react";

const About = () => <h2>About</h2>;

export default About;

你不能返回jsx。这就是你犯错误的原因。

这是您应该如何返回jsx的。

代码语言:javascript
复制
 const About = () => (<h2>About</h2>);

干杯!

票数 1
EN

Stack Overflow用户

发布于 2019-02-19 08:18:55

你为什么不使用react.lazy呢?它是官方的组成部分。

代码语言:javascript
复制
const About = React.lazy(() => import('./About')
<Route exact path="/about" component={props => <About {...props} />} />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54609956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档