当前位置: 首页 > 知识库问答 >
问题:

未捕获错误:不变冲突:元素类型无效:对象

景嘉志
2023-03-14

我正在修补react路由器,试图实现简单的路由。我按照他们的示例中所写的方式键入代码(但不包括imports)https://github.com/rackt/react-router#whats-看起来像。

我在浏览器中得到这个错误:

未捕获错误:不变违反:元素类型无效:预期字符串(用于内置组件)或类/函数(用于复合组件),但得到了:对象。

这就是我要做的。

我在页面上附加脚本,ReactRouter.min.js和我的代码在react-routes.js。还有react-domreact-dom和jQuery(所有三个都在app.js中):

<script src="/js/app.js" type="text/javascript" charset="utf-8"></script>
<script src="https://npmcdn.com/react-router/umd/ReactRouter.min.js"></script>
<script src="/js/react-routes.js" type="text/javascript" charset="utf-8"></script>

这是我的react路由器。js,尚未编译

'use strict';
window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;

const Foo = React.createClass({
    render() {
        return (
            <div>
                <h1>HELLO, me FOO</h1>
            </div>
        )
    }
});

ReactDOM.render((
    <Router>
        <Route path="/" >
            <Route path="/page/one" component={Foo}/>
        </Route>
    </Router>
), document.getElementById('content-section'))

这是我用Babel编译后的react-router.js。我在页面上附上了这个:

babel——预设反应-o public/js/react路由。js assets/js/react路由。js

'use strict';

window.Router = window.ReactRouter;
window.Link = window.ReactRouter.Link;
window.Route = window.ReactRouter.Route;

const Foo = React.createClass({
    displayName: "Foo",

    render() {
        return React.createElement(
            "div",
            null,
            React.createElement(
                "h1",
                null,
                "HELLO, me FOO"
            )
        );
    }
});

// Error is thrown here, in this line
ReactDOM.render(React.createElement(
    Router,
    null,
    React.createElement(
        Route,
        { path: "/" },
        React.createElement(Route, { path: "/page/one", component: Foo })
    )
), document.getElementById('content-section'));

我做错了什么?为什么抛出错误?路由器是一个对象,而不是React组件。为什么啊?我看了这个例子,并以同样的方式键入代码https://github.com/rackt/react-router#whats-it-look-like

共有1个答案

闽高峯
2023-03-14

你的

window.Router = window.ReactRouter;

应该是

window.Router = window.ReactRouter.Router;

您得到错误是因为您试图使用

 类似资料:
  • 首先,我想说,我是新来的JavaScript和反应世界所以提前抱歉,如果我的问题是微不足道的,但我不能弄清楚这种情况。如果需要,我会更新帖子。 我想将我当前的应用程序迁移到单页应用程序。我有3个主要页面PageA,PageB和PageC(在反应我有3个主要组件)。我希望能够在这3个页面/组件之间切换。假设我有这个标志文本,这是代表网站标志的组件。我想把它放在所有其他组件中(包括PageA),当我点

  • 无法理解为什么在尝试实现此角度代码时会出现TypeError。它在类({constructor:function(){}})周围生成错误。不确定原因。谢谢你的帮助

  • 在组件的呈现函数中,我有: 所有内容都显示良好,但单击 元素时,我会收到以下错误: 未捕获得错误:不变冲突:对象作为React子级无效(找到:具有键得对象{dispatchConfig,dispatchMarker,nativeEvent,target,currentTarget,type,eventPhase,bubbles,cancelable,timeStamp,defaultPrevent

  • 我试图在模板文件中放置WordPress菜单。我发现使用wp_nav_菜单不舒服,因为它输出的标记与我的静态HTML模板不兼容。我知道我可以使用定制的menu walker类来修改wp_nav_菜单的标记。但是,我只想使用菜单名及其对应的url,并将其放在我的模板中。为此,我使用此函数获取菜单的所有属性/属性的数组。 我该怎么做? 我目前正在努力处理这些代码行 这将生成以下错误: 致命错误:未捕获

  • 我试图实现一个简单的功能,的一个按钮,它应该添加放置数组并显示在视图中,但我似乎得到了一个错误,请帮助 这是我的代码, 这是我得到的错误, 我是个新来的土生土长的人,所以我对此一无所知。

  • Reactjs上下文提供程序错误 我得到以下错误 不变的js:42未捕获错误:元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:对象。 这里是我的 这里是: 这是在反应16.3.2。有许多情况下,错误是由于默认与命名的出口,这似乎不是: 未捕获错误:不变冲突:元素类型无效:应为字符串(用于内置组件)或类/函数,但得到:object