如何修复所有.js文件中的history.push?

时间:2019-01-27 16:33:16

标签: reactjs

我正在App.js文件中创建一个路由器。 我正在创建一个登录页面,并使用this.props.history.push('/ homepage')更改页面以转到主页。可以。

现在我在/ homepage中,我想做同样的事情,但是它不起作用... 我做:this.context.history.push('/ test');并且出现错误“ TypeError:无法读取未定义的属性'push'”。

我已经尝试使用“ this.context.router.history.push('/ page');”但我有同样的错误。我尝试使用browserHistory而不是HashRouter,但是它不起作用。 唯一起作用的是创建函数并使用buttonclick调用它们。但是我不能用反应的方式做到这一点!

Collection<Person> filtered = records.stream()         // Stream<Person>
    .collect(Collectors.groupingBy(                    // from Map<Long, List<Person>>
        Person::getId,
        Collectors.collectingAndThen(                  // .. downstream to ..
                Collectors.reducing((a, b) ->          // .. Map<Long, Optional<Person>>
                    comparator.compare(a, b) > 0 ? a : b),
                Optional::get))                        // .. Map<Long, Person>
    .values();                                         // .. Collection<Person>

所以它不适用于导航栏文件,我也不知道为什么

有人可以解释一下为什么它不起作用以及是否存在“ reactjs”方法吗?谢谢,祝您晚安

1 个答案:

答案 0 :(得分:1)

您必须使用 withRouter 将组件包装起来,例如:

import React, { Component } from 'react';
import { withRouter } from 'react-router';

class Navbar extends Component { ... }
const NavbarWithRouter = withRouter(Navbar);

export default NavbarWithRouter;

这样做,您可以在导航栏的组件中访问 match 位置历史记录道具

您需要为需要访问属性的每个组件重复上述步骤