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

reactjs路由器无法读取未定义的渲染

谷梁嘉悦
2023-03-14

我正在组装我的第一个基于react的应用程序。我有一个工作应用程序,并已在反应路由器编织。我和巴贝尔在一起。

我在chrome的开发者控制台上得到了以下信息-

Uncaught TypeError: Cannot read property 'render' of undefined
at Object.1../components/Login (http://localhost:8000/bundle.js:90:19)
at s (http://localhost:8000/bundle.js:1:254)
at e (http://localhost:8000/bundle.js:1:425)
at http://localhost:8000/bundle.js:1:443

我在components/Login.js上有以下组件

import React, { Component } from 'react';

class Login extends React.Component {
render() {
    return (
        <nav>
            <ul>
                <li><a href="#">Sign Up Now</a></li>
                <li><a className="button button-primary" href="#">Sign In</a></li>
            </ul>
        </nav>
    );
}
}
export default Login

在我的app.js我有以下几点-

'use strict';

import React from 'react';
import { ReactDOM, render } from 'react-dom';
import { browserHistory, Router, Route, Link, withRouter } from 'react-router';

import {Login} from './components/Login';

const App = React.createClass({

  render() {
    return (
      <div>

        <h2>Title</h2>
        <Options/>

      </div>
    )
  }
})



const Logout = React.createClass({

  render() {
    return <p>You are now logged out</p>
  }

})

const Profile = React.createClass({
  render() {
    //const token = auth.getToken()

    return (
      <div>
        <h1>Profile</h1>
        <p>You made it!</p>
        //<p>{token}</p>
      </div>
    )
  }
})

function requireAuth() {
    console.log("here");
}

ReactDOM.render((   
    <Router>
        <Route path="/" component={App}>
            <Route path="login" component={Login} />
            <Route path="logout" component={Logout} />
            <Route path="profile" component={Profile} onEnter={requireAuth} />
        </Route>
    </Router>
), document.getElementById('app'));

我认为我的错误在于我导出/导入我的组件的方式,因为错误存在于另一个组件中,并且当我更改上面第一个导入的组件时,错误落在该组件上。

我尝试了各种方法,如向导入添加{}、向导出添加默认值以及向组件添加其他导入,如react-dom。

我正在用以下方法建造

babel -presents react,es2015 js/source -d js/build
browserify js/build/app.js -o bundle.js 
cat css/*/* css/*.css | sed 's/..\/..\/images/images/g' > bundle.css
date; echo;

有人能给我建议吗?我已经做了三个晚上了。我只是不明白为什么渲染是未定义的,而它以前在没有路由器的情况下工作。

共有3个答案

相高谊
2023-03-14

更改从“/components/Login”导入{Login} 从“./components/Login”导入登录。请记住,在导出带有默认值的内容时,不需要包含{}

诸葛雅达
2023-03-14

改变

import ReactDOM, { render } from 'react-dom'; 

import { ReactDOM, render } from 'react-dom';

做到了——我也没有在路由器中设置导致次要故障的浏览历史。

公良昕
2023-03-14

将登录导入行更改为从“/components/Login”导入登录 修复它?

 类似资料:
  • 我所遵循的教程使用的是React-Router 2.0.0,但在我的桌面上,我使用的是4.1.1。我试图搜索更改,但没有找到有效的解决方案。

  • 问题内容: 我正在通过教程学习reactjs并遇到此错误。那就是“无法读取未定义的属性’keys’”。我的代码非常少,因此我认为它与语言的结构有关。有谁知道这个问题和可能的解决方案? 问题答案: 编辑:奇怪的是,在我们上面的评论之后,我检查了一下它是否确实是babel核心版本,我在小提琴中使用了这个版本: 我在上面第二个切换到您的版本时得到以下信息: 使用not 并在括号中包裹多行html,如下所

  • 问题内容: 我设置了渲染组件的路线: 然后在该组件(PageStart)中,我有: 但这会引发错误: 简单调用时传递道具似乎可以正常工作,但在render函数中不行。为什么? 问题答案: 因为您没有将路由器传递的默认道具传递到组件中,例如比赛,历史记录等。 当您编写此代码时: 这意味着组件中没有任何价值。 这样写: 现在将所有值传递给组件。

  • 问题内容: HTML代码: JSX代码: 运行后的控制台消息: 未捕获的TypeError:无法读取未定义的属性“键” 为什么? 问题答案: 我也遇到了同样的问题,在浏览互联网时,我发现我使用的babel-core版本存在问题。我用另一个替换了它,并使我的代码正常工作。 试试这个 的HTML JSX 它也应该为您工作。 更新: 由于是,您可以将软件包用于更高版本的babel编译。

  • 运行此代码时,在的第一行出现错误 TypeError:无法读取未定义的属性“array” 代码: 我试着搜索,但没有得到正确的解。

  • 问题内容: 运行此代码时,我在第一行出现错误 TypeError:无法读取未定义的属性“数组” 码: 我尝试搜索,但没有得到正确的解决方案。 问题答案: 道具类型现在是一个单独维护的库,名称为 这里是react- docs的解释:https : //reactjs.org/docs/typechecking-with- proptypes.html 您必须将它们导入为 NPM套餐