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

reactjs-无法读取未定义的属性推送

彭鸿彩
2023-03-14

我有这个密码。我想做的是,当我点击一个“功能”按钮时,它将带我去索引路由。然而,React一直说“无法读取未定义的属性”我做错了什么?

路线js

import React from "react";
import ReactDOM from "react-dom";
import {Router, Route, hashHistory, IndexRoute } from "react-router";

import Layout from "./page/Layout";
import Features from "./page/Features";
import Features from "./page/archive";

const app = document.getElementById('app');

ReactDOM.render(
    <Router history={hashHistory}>
        <Route path="/" component={Layout}>
            <IndexRoute component={Features} />
            <Route path="archive" component={Archive} />
        </Route>
    </Router>, app);

布局组件

import React from "react";
import {Link, Router, Route, hashHistory} from "react-router";
export default class Layout extends React.Component{
    navigate(){
        this.context.router.push('/');
    }
    render(){ 
        return(
            <div>
                {this.props.children}
                <button onClick={this.navigate.bind(this)}>feature</button>
            </div>
        )
    }
}

package.json-部分

"react": "^0.14.7",
"react-dom": "^0.14.7",
"react-router": "^2.0.1"
 "history": "^2.0.1",

-------------约旦答复的最新情况-------------

共有3个答案

养淇
2023-03-14

使用React router v4,您需要将组件包装在路由器中。然后可以访问组件中的历史记录。执行以下操作:

import { withRouter } from 'react-router-dom';
...
...
export default withRouter(MyComponent);
闻人嘉木
2023-03-14

这可能不是指上面的例子,但我有相同的错误。经过大量调试,我发现我的内部组件无法访问历史记录。确保可以访问您的历史记录。

//梅因。js

<BrowserRouter>
    <div>
        <Route path="/" component={Home}/>
        <Route path="/techMap" component={TechMap}/>
    </div>
 </BrowserRouter>

//应用程序。js

<div>
   <TechStack history= {this.props.history}/>
</div>

//techstack。js

<div>
    <span onClick={this.search.bind(this)}>
    </span>
 </div>
)

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

TechStack是我的内部组件。

早些时候,我可以在应用程序中获取历史记录。js,但不在tech.js中。但在以历史的形式传递道具之后,我在tech.js和routing works中获得了历史

公冶威
2023-03-14

在React路由器v4中,您不再需要向路由器提供历史记录。取而代之的是,您只需使用Browser路由器Hash路由器。但这使得当你不在反应组件中时,如何将溃败推向你的历史变得不清楚。

解决方案是使用历史记录包。

只需像这样导入create历史

import createHistory from 'history/createBrowserHistory'

或者我是这样做的:

import { createHashHistory } from 'history'

然后创建您的历史记录

export const history = createHashHistory()

现在,您可以推动它:

history.push('/page')

我希望这能帮助其他人解决这个问题。目前没有一个答案能满足我的需要。

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

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

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

  • 有人可以解释为什么我得到一个错误,当我使用此语法 但是当我使用箭头指针语法时没有错误,如下所示 注意:在这两种情况下,我都使用过 在 内。

  • 问题内容: 我正在尝试在ReactJS中创建一个简单的TODO列表应用程序。我对React的基础知识不太清楚,所以我被困在这里。 生成每个列表后,将为其分配一个复选框。代码在没有onChange事件到Checkbox的情况下工作正常。但是,将“已检查”功能分配给它时,会产生错误。 未捕获的TypeError:无法读取未定义的属性“已检查” 提前致谢 问题答案: 您需要设置的(你可以做到这一点通过第

  • 我基本上是React的初学者。我有一个仪表板页面,其中显示了一个React表。我有一个自定义按钮,它将打开一个弹出页面,这个弹出页面有一些复选框允许我显示/隐藏那些反应列。最初,此弹出页面中的所有复选框都设置为true。当我取消选中某列时,该列将被禁用。 这是我的父组件-父页面是带有ReactTable的页面,现在有10列,而不是像图中所示的8列。 这是我的子组件--在我的子页面(显示复选框的页面

  • 我目前使用两个组件,并在这两个组件上实现了react Route。但是当我单击父组件viewall.js时,我无法从我的模拟json服务器api中获取值,这个错误显示: viewall.js