gpt4 book ai didi

node.js - React路由器:Warning: React. createElement : type should not be null,未定义

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:12 26 4
gpt4 key购买 nike

警告是警告:React.createElement:类型不应为 null、未定义、 bool 值或数字。它应该是一个字符串(对于 DOM 元素)或一个 ReactClass(对于复合组件)。

然后它抛出错误错误:不变违规:元素类型无效:需要一个字符串(对于内置组件)或一个类/函数(对于复合组件),但得到:未定义。 renderToString

整个代码是:

import { renderToString } from 'react-dom/server';
import * as React from "react";
import * as ReactDOM from "react-dom";

let History = require("history");
let ReactRouter = require("react-router");

let match = ReactRouter.match;
let RouterContext = ReactRouter.RouterContext;
let Route = ReactRouter.Route;
let Router = ReactRouter.Router;
let Link = ReactRouter.Link;

let TestComponent = React.createClass({
render: function() {
return (
<button>test</button>
);
}
});

console.log(renderToString(<TestComponent/>));// a

let routes = [
<Route path="/" component={TestComponent}/>
];

match({ routes, location: "/" }, (error, redirectLocation, renderProps) => {
if (error) {
console.log(error);
return;
}
if (redirectLocation) {
console.log(redirectLocation);
return;
}
if (renderProps) {
let component = <RouterContext {...renderProps} />;// b
console.log(renderToString(component));// c
}
});

a 处的输出是正确的。

警告位于 b

错误位于c

环境:

  • react 路由器:1.0.3
  • 历史记录:1.17.0
  • react 和 react -dom:0.14.3

该代码基于https://github.com/rackt/react-router/blob/master/docs%2Fguides%2Fadvanced%2FServerRendering.md处的文档

最佳答案

我在react-router的源码中没有发现RouterContext

但是有RoutingContext,所以我使用它,现在可以了。

谢谢@limelights

这似乎是 react-router 的一个错误 https://github.com/rackt/react-router/issues/2713

关于node.js - React路由器:Warning: React. createElement : type should not be null,未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com