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

未捕获的TypeError:无法读取未定义的属性“push”(React-Router-Dom)

易风华
2023-03-14

我相信我将正确的索引值从仪表板传递到app,再传递到bldgs。但是,在我的app.js文件中抛出一个错误,该错误声明:

未捕获的TypeError:无法读取未定义的属性“push”

在开始将HandleClick()函数传递给Dashboard组件之前,我的代码运行良好。

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css';
import injectTapEventPlugin from 'react-tap-event-plugin';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import { BrowserRouter as Router } from 'react-router-dom';
import { hashHistory } from 'react-router';

// Needed for onTouchTap
// http://stackoverflow.com/a/34015469/988941
injectTapEventPlugin();

ReactDOM.render(
  <MuiThemeProvider>
    <Router history={hashHistory}>
      <App />
    </Router>
  </MuiThemeProvider>,
  document.getElementById('root')
);
import React from 'react';
import { Route } from 'react-router-dom';
import Dashboard from './Dashboard';
import Bldgs from './Bldgs';

var selectedTab;

class App extends React.Component {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
    selectedTab = 0;
  }

  handleClick(value) {
    selectedTab = value;
    // console.log(selectedTab);
    this.props.history.push('/Bldgs');
    // console.log(this.props);
  }

  render() {
    var _this = this;

    return (
      <div>
        <Route exact path="/" render={(props) => <Dashboard {...props} handleClick={_this.handleClick} />} />
        <Route path="/Bldgs" component={Bldgs} curTab={selectedTab} />
      </div>
    );
  }
}

export default App;

dashboard.js

import React, { Component } from 'react';
import './Dashboard.css';
import { AutoRotatingCarousel, Slide } from 'material-auto-rotating-carousel';
...

var curIndex;

class Dashboard extends Component {
  constructor(props) {
    super(props);
    this.handleEnter = this.handleEnter.bind(this);
    this.handleChange = this.handleChange.bind(this);
    curIndex = 0;
  }

  handleEnter(e) {
    // console.log(curIndex);
    this.props.handleClick(curIndex);
  }

  handleChange(value) {
    // console.log(value);
    curIndex = value;
  }

...
}

export default Dashboard;

Bldgs.JS

...
var curTab;

class Bldgs extends Component {
  constructor(props) {
    super(props);
    this.handleChange = this.handleChange.bind(this);
    this.goHome = this.goHome.bind(this);
    curTab = 0;
  }

  handleChange(value) {
    this.setState({'selectedTab': value});
    console.log(this.state);
  }

  goHome(e) {
    this.props.history.push('/');
  }

...
}

export default Bldgs;

共有1个答案

董和泽
2023-03-14

为了在app组件中使用history,请将其与Wisuroter一起使用。只有当组件没有接收到路由器道具时,才需要使用wishrouter,

如果您的组件是路由器呈现的组件的嵌套子组件,或者您没有将路由器道具传递给它,或者组件根本没有链接到路由器,而是作为路由之外的单独组件呈现,则可能会发生这种情况。

import React from 'react';
import { Route , withRouter} from 'react-router-dom';
import Dashboard from './Dashboard';
import Bldgs from './Bldgs';

var selectedTab;

class App extends React.Component {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
    selectedTab = 0;
  }

  handleClick(value) {
    selectedTab = value;
    // console.log(selectedTab);
    this.props.history.push('/Bldgs');
    // console.log(this.props);
  }

  render() {
    var _this = this;

    return (
      <div>
        <Route exact path="/" render={(props) => <Dashboard {...props} handleClick={_this.handleClick} />} />
        <Route path="/Bldgs" component={Bldgs} curTab={selectedTab} />
      </div>
    );
  }
}

export default withRouter(App);

关于Wiushroter的文件

 类似资料:
  • 问题内容: 我有一个带有旋转幻灯片的 仪表板 ,每个幻灯片在 Bldgs中 都有一个对应的选项卡。两者并有孩子我。 当用户单击特定的幻灯片时,需要告诉以便告诉它在路由到时显示选项卡。 我 相信 ,我从传递正确的索引值达到和向下。但是,我的文件中抛出一个错误,指出: 在我开始将函数传递给组件之前,我的代码运行良好。 Index.js App.js Dashboard.js Bldgs.js 问题答案

  • 使用“react-router-dom”:“^4.1.2”,“react-router-redux”:“^5.0.0-alpha.6”,在重定向完成后,我在console.log()中得到标题“uncatted typeerror:不能读取未定义的reacted Router redux的属性”type“。截图显示,包含有效载荷数据的可观察动作没有问题。有效负载包含表单数据(值)和历史对象。我设法

  • 问题内容: 我是新来的反应和反应路由器。 react的问题在于,在我的应用程序的某些页面上,react-router正在运行,并且出现一些类似的错误:“无法读取未定义的属性’push’”。 我正在使用反应0.14.1 我的路由代码如下所示: 我的组件现在是这样的: 谁能帮我这个?谢谢。 问题答案: 您的应用程序中没有提供支持的Router实例。 我假设您要导入withRouter以获取Router

  • 我试图显示在react for Elasticsearch中运行查询得到的结果,但我无法做到这一点。它给出了错误,但当我在一个变量中运行相同的查询时,它返回currect结果。有人能告诉我如何在“results”数组中存储结果以及如何在网页中显示结果吗?在以下方面获取错误:

  • 问题内容: 如果这个问题已经回答,我深表歉意。我尝试搜索解决方案,但找不到适合我的代码的任何解决方案。我还是jQuery新手。 对于两个不同的页面,我有两种不同类型的粘滞菜单。这是两者的代码。 我的问题是,底部粘性菜单的代码不起作用,因为第二行代码会引发错误,提示“未捕获的TypeError:无法读取未定义的属性’top’”。实际上,除非将第二行以下的其他jQuery代码放在第二行之上,否则根本不

  • 问题内容: 我收到此错误,它源自jquery框架。当我尝试在文档准备好加载选择列表时,出现此错误。我似乎找不到我为什么收到此错误的信息。 它适用于change事件,但是尝试手动执行功能时出现错误。 未捕获的TypeError:无法读取未定义的属性’toLowerCase’-> jquery-2.1.1.js:7300 这是代码 问题答案: 当您调用DOMReady时,的上下文将不是元素。 您可以通